Форум сайта python.su
Здравствуйте, уважаемые программисты на python.
Только начал изучать python, пишу небольшой скрипт для работы с твиттером с использованием прокси…
Не могу заставить модуль python requests работать через прокси по https.
С офсайта этого модуля:
If you need to use a proxy, you can configure individual requests with the proxies argument to any request method:import requests proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } requests.get("http://example.org", proxies=proxies)
#!/usr/bin/env python #_*_ coding: utf-8 _*_ import requests proxy_line = 'http://193.106.31.10:8085' proxies = { "http": proxy_line, "https": proxy_line, } print ('proxy:', proxy_line) r2 = requests.get("http://ifconfig.me/ip", proxies=proxies) #сервис для получения IP по http-протоколу - это работает print ('page via http:', r2.text) r = requests.get("https://ipdb.at/", proxies=proxies) #сервис для получения IP по https-протоколу - это почему-то не работает! print ('page via https:', r.text)
./test_https.py ('proxy:', 'http://193.106.31.10:8085') ('page via http:', u'193.106.31.10\n') ('page via https:', u'<html><head><title>400 Bad Request</title></head>\r\n<body><h2>400 Bad Request</h2></body></html>\r\n')
Отредактировано valet (Сен. 20, 2013 15:59:29)
Офлайн
Прокси должен уметь работать с методом CONNECT, чтобы вы могли через HTTP доступаться до HTTPS.
Офлайн
Неспособность прокси поддерживать CONNECT, кстати, может как раз вызывать ошибку 400 Bad Request.
По сути, это ошибка синтаксиса HTTP(S) протокола.
Офлайн
valetЗамените urllib3 в пакете на последнюю версию
Не могу заставить модуль python requests работать через прокси по https
Офлайн
LexanderЭто он умеет. Аналогичный скрипт на php+curl работает!
Прокси должен уметь работать с методом CONNECT, чтобы вы могли через HTTP доступаться до HTTPS.
<?php
$proxy_line = 'http://193.106.31.10:8085';
echo “$proxy_line<hr>”;
if( $curl = curl_init() ){
//опции
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_PROXY, "$proxy_line“);
curl_setopt($curl, CURLOPT_URL, ”https://ipdb.at/“);
curl_setopt($curl, CURLOPT_POST, 0);
$out = curl_exec($curl);
echo ”$out“;
}
else echo ”curl_init fail";
?>
…То есть четко видим что через этот прокси поддерживает работу с https-протоколом.
IP address is numbered 193.106.31.10. This IP address is active in Ukraine. IP Country code is UA. IP address is assigned to “TOO Centr Informacionnyh Technologii”. In organization “TOO Centr Informacionnyh Technologii”. It is also assigned to a hostname unassigned10.citonline.com.ua. IP address longitude is 32.0 and latitude is 49.0.
…
Отредактировано valet (Сен. 21, 2013 14:34:48)
Офлайн
pyuserА можно подробнее, как именно это сделать? Я пока совсем слабо ориентируюсь в python что там да как обновляется/заменяется…
Замените urllib3 в пакете на последнюю версию
pip install urllib3 Downloading/unpacking urllib3 Downloading urllib3-1.7.tar.gz (61Kb): 61Kb downloaded Running setup.py egg_info for package urllib3 Installing collected packages: urllib3 Running setup.py install for urllib3 Successfully installed urllib3 Cleaning up...
Отредактировано valet (Сен. 21, 2013 11:34:15)
Офлайн
Ребята, помогите пожалуйста разобраться. За рабочее решение как заставить модуль python requests работать через прокси по https-протоколу готов заплатить.
Не могу продолжить работу уже который день из-за сабжа…
Офлайн
Попробуйте через Grab :)
Офлайн
lorienДа, спасибо, через Grab все работает
Попробуйте через Grab
Офлайн
valetБаг был в urllib3.
Видимо в python requests какой-то баг
Офлайн