
Quand la saisie de données sur les fonds se heurte à des obstacles ? Essayez cette technique de "changement d'armure".
Récemment, de nombreux amis m'ont demandé si l'utilisation de la bibliothèque Python yfinance pour obtenir des données sur les fonds était toujours interceptée. En fait, cela n'a rien à voir avec la configuration du site web.Seuil de fréquence des visitesC'est comme la limite de trois bouteilles de Moutai par jour au supermarché pour un même visage.revenir à ses anciennes habitudesEntrée.
La "chaîne de verrouillage" dans la vie réelle.
La semaine dernière, un client est tombé dans ce piège : le script d'automatisation qu'il avait écrit était en cours d'exécution et a soudainement signalé une erreur 403. J'ai consulté les journaux, et il s'agissait de la même adresse IP !Plus de 200 demandes en cinq minutes.Les serveurs sont directement mis sur liste noire. C'est comme acheter cent billets de loterie à la suite avec la même carte d'identité, si vous ne vérifiez pas, qui vérifiez-vous ?
importer yfinance en tant que yf
Façon conventionnelle d'écrire
fund = yf.Ticker("000001.SS")
print(fund.history(period="1mo")) Ici vous pouvez obtenir une erreur soudaine
Les merveilles des pools d'adresses IP dynamiques
C'est alors qu'il est temps deService Proxy IPpour s'en sortir. Prenons l'exemple du service d'ipipgo, qui dispose de deux atouts majeurs pour son pool d'adresses IP dynamiques :
| Fonctionnalité | effet |
|---|---|
| Commutation automatique de l'IP | Nouvelle identité sur demande |
| Répartition géographique aléatoire | Simulation de visites dans différentes régions du pays |
Par exemple, nous pouvons modifier le code pour qu'il ressemble à ceci :
Importation de demandes
from yfinance import shared
def get_proxy().
Ici, nous utilisons l'API ipipgo pour obtenir le proxy dynamique
return {"http" : "http://用户名:密码@gateway.ipipgo.com:9020"}
fund = yf.Ticker("000001.SS")
fund._session.proxies = get_proxy()
data = fund.history(interval="1h")
Trois points clés pour la configuration des agents
1. Soyez flexible avec les paramètres du délai d'attenteIl est recommandé de le régler sur 3-5 secondes pour couper automatiquement l'IP suivante en cas de décalage.
2. Le mode "High Stash" est indispensable !Le proxy anonyme profond d'ipipgo cache de véritables empreintes digitales
3. Mécanisme de non-réessaiIl est recommandé de mettre en place 3 tentatives, avec des IP différentes entre les deux.
Foire aux questions QA
Q : Que dois-je faire si mon IP proxy ne fonctionne pas ?
R : Il est recommandé d'utiliser la fonctionMécanisme de fusion intelligentLe système rejette automatiquement les nœuds défaillants.
Q : Les demandes de données sont toujours interrompues ?
R : Vérifiez les paramètres locaux du proxy et essayez de sélectionnernord, Shanghai, Guangzhou et Shenzhendes nœuds avec une qualité de réseau plus stable
Q : Comment puis-je savoir si une procuration est en vigueur ?
R : Ajoutez une instruction de débogage au code afin d'afficher l'IP de sortie pour chaque requête :
response = requests.get("http://ip.ipipgo.com", proxies=proxy)
print(f "IP de sortie actuelle : {response.text}")
Guide pour éviter la fosse
Il a été récemment découvert qu'une personne utilisant un proxy gratuit a causé des dommages à l'environnement.violation de donnéesCela n'en vaut vraiment pas la peine. ipipgo'sTunnels cryptés de classe entrepriseCe n'est pas la même chose, la transmission complète HTTPS et l'obscurcissement du trafic. Ne perdez pas tout l'argent de votre famille juste pour économiser quelques centimes, vous ne croyez pas ?
Enfin, lors de la mise en place d'un proxy, n'oubliez pas de définir le paramètreParamètres d'authentification de l'utilisateurMettez-le dans une variable d'environnement, ne soyez pas stupide et n'écrivez pas le mot de passe du compte à mort dans le code. C'est comme si vous mettiez la clé de votre maison dans la serrure, n'attendez-vous pas qu'elle soit volée ?

