2010-02-09 5 views
0

J'ai une configuration de mécanisation et de travail avec python. J'ajoute le support pour l'utilisation d'un proxy, mais comment puis-je vérifier que j'utilise réellement le proxy?python mechanize question proxy

Voici un code J'utilise:

ip = 'some proxy ip address' 
br.set_proxies({"http://": ip}) 

Je commençais à me demander si elle travaillait parce juste pour faire quelques tests, je saisis:

ip = 'asdfasdf' 

et ne pas jeter une erreur. Alors, comment puis-je vérifier si elle utilise vraiment l'adresse IP pour le proxy que je passe ou l'adresse IP de mon ordinateur? Y at-il un moyen de renvoyer des informations sur votre ip dans mechanize?

+0

Si vous utilisez 'http: //' comme la clé, mécaniser alors ne le reconnaissent pas comme un type de proxy. Vous devez utiliser '{" http ": .....}' – FallenAngel

Répondre

0

Je ne sais pas comment gérer ce problème avec mécaniser, mais vous pouvez lire le lien suivant qui explique comment le faire sans mécaniser (mais toujours en python):

Proxy Check in python

La solution simple fourni au lien mentionné ci-dessus pourrait être facilement adapté à vos besoins.

Ainsi, au lieu de la ligne:

print "Connection error! (Check proxy)" 

vous pouvez remplacer par

SucceededYesNo="NO" 

et au lieu de

print "All was fine" 

remplacer par juste

SucceededYesNo="YES" 

Maintenant, vous avez une variable disponible pour un traitement ultérieur. Je crains toutefois que cela ne couvre pas les cas où la page Web cible est hors service parce que la même erreur peut survenir pour deux raisons (donc on ne sait pas si un résultat NON provient d'un serveur proxy qui ne fonctionne pas ou à partir d'une mauvaise page Web), mais pourrait encore être une solution: que diriez-vous de vérifier avec le code mentionné ci-dessus une page Web de travail? c'est-à-dire www.google.com? De cette façon, vous pourriez éliminer une cause et elle reste l'autre.

2

peut-être comme ça?

br = mechanize.Browser() 
br.set_proxies({"http": '127.0.0.1:80'}) 

vous avez besoin de déboguer pour plus d'informations

br.set_debug_http(True) 
br.set_debug_redirects(True) 
Questions connexes