2012-06-27 3 views
2

Каков способ делать urlopen в python таким образом, что даже если базовый компьютер имеет сетевую инфраструктуру ipv6, запрос отправляется через ipv4 вместо ipv6?Как сделать urlopen по ipv4 по умолчанию

+0

Возможный дубликат [Force python mechanize/urllib2 использовать только запросы A?] (Http://stackoverflow.com/questions/2014534/force-python-mechanize-urllib2-to-only-use-a-requests) – geoffspear

+0

или, возможно, [как заставить библиотеку httplib python использовать только A-запросы] (http://stackoverflow.com/questions/1540749/how-to-force-python-httplib-library-to-use-only-a-requests)? – glglgl

+0

'urllib.urlopen()' или 'urllib2.urlopen()'? – glglgl

ответ

1

Я изучил исходный код. К сожалению, urllib.urlopen(), похоже, использует httplib.HTTP(), что даже не позволяет установить адрес источника.

urllib2.urlopen() использует httplib.HTTPConnection(), которые вы могли бы наследовать от и создать класс, который по умолчанию устанавливает адрес источника '0.0.0.0' вместо ''. Затем вы можете каким-то образом ввести этот новый переопределенный класс в материал urllib2, создав «новый» HTTPHandler() (посмотрите, как это делается в urllib2.py) и новый нож, который вы build_opener() и/или install_opener().

Извините, что не очень точно, но я никогда не делал такого и не знаю точно, как это работает.

+1

Я попробовал предложение, зарегистрированное здесь http://stackoverflow.com/a/6319043/420284, и оно работает для меня .., хотя это уродливое взломать, но, возможно, самое простое для меня. – Divick

 Смежные вопросы

  • Нет связанных вопросов^_^