2010-02-09 3 views
0

У меня есть механизация и работа с python. Я добавляю поддержку использования прокси-сервера, но как я могу проверить, что я действительно использую прокси-сервер?python mechanize proxy question

Вот код, я использую:

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

Я начал задаваться вопросом, если он работает, потому что просто сделать некоторые тесты я набранный:

ip = 'asdfasdf' 

и не бросать ошибка. Итак, как мне проверить, действительно ли он использует ip-адрес для прокси-сервера, который я передаю, или IP-адрес моего компьютера? Есть ли способ вернуть информацию о вашем ip в механизации?

+0

Если вы используете 'HTTP: //' как ключ, то механизировать не распознает его как тип прокси. Вы должны использовать '{" http ": .....}' – FallenAngel

ответ

0

Я не знаю, как справиться с этой проблемой с Mechanize, но вы можете прочитать следующую ссылку, которая объясняет, как сделать это без Mechanize (но все еще в питоне):

Proxy Check in python

Простое решение предоставленные по вышеупомянутой ссылке, могут быть легко адаптированы к вашим потребностям.

Таким образом, вместо строки:

print "Connection error! (Check proxy)" 

вы могли бы заменить

SucceededYesNo="NO" 

и вместо

print "All was fine" 

просто заменить

SucceededYesNo="YES" 

Теперь у вас есть переменная, доступная для дальнейшей обработки.

Я, однако, опасаюсь, что это не будет охватывать случаи, когда целевая веб-страница не работает, потому что одна и та же ошибка может возникнуть из-за двух причин (так что не было бы известно, будет ли результат NO исходить от неработающего прокси-сервера или с плохой веб-страницы), но все равно может быть решением: как насчет проверки с вышеупомянутым кодом рабочей веб-страницы? например www.google.com? Таким образом, вы можете устранить одну причину, и она останется другой.

2

Возможно, это так?

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

вам нужно отладить для получения дополнительной информации

br.set_debug_http(True) 
br.set_debug_redirects(True)