Python: HTTPS с использованием прокси-сервера с запросами - PullRequest
0 голосов
/ 15 ноября 2018

Я использую MyIPHide.Я загрузил их клиентское программное обеспечение, установил его и включил службу.

Я могу получить доступ к https веб-сайтам нормально с помощью браузера, но я не могу использовать requests, чтобы получить страницы

Этоработает:

import requests
IP=requests.get('http://api.ipify.org').text

proxyDict = { "http"  : IP,
              "https"  : IP
            }

url='http://www.cnn.com'
r=requests.get(url,proxies=proxyDict)

Это не так:

url='https://www.cnn.com'
r=requests.get(url,proxies=proxyDict)

разница только в http против https

вот обратная связь:

File "C:\Python27\lib\site-packages\requests\adapters.py", line 502, in send
    raise ProxyError(e, request=request)
ProxyError: HTTPSConnectionPool(host='www.cnn.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', error(10053, 'An established connection was aborted by the software in your host machine')))

Я пробовал другие https веб-сайты, они все не работают.

Я также получил поддержку по электронной почте в MyIPHide.Они сказали, что все прокси поддерживают https, что верно, когда я использую только браузер.

Единственное, что работает, если я использую Selenium и получаю страницу, а затем driver.page_source для текста.

Это не проблема прокси-сервера, потому что я купил частный адрес прокси-сервера через sslprivateproxy.com и ввел IP-адрес и порт, и я все еще получаю те же ошибки.

Я используюPython 2.7.15 и запросы 2.20.1.Работает без прокси-запросов, то есть:

import requests
url='https://www.cnn.com'
r=requests.get(url)

>>> r
<Response [200]>
>>>

Также пробовал Python 3.6 с запросами 2.20.1 -> те же результаты.

1 Ответ

0 голосов
/ 15 ноября 2018

По запросам это зависит от размера PoolManager, поэтому, если вы хотите иметь больше соединений в пуле, вы можете сбросить размер HTTPAdapter().Таким образом (чтобы убедиться, что он работает, вы можете установить 0).

import requests
from requests.adapters import HTTPAdapter

proxy = {"http":"118.174.233.31:51726",
        "https":"43.254.132.86:50659"} # free proxy,often need to modify

with requests.Session() as se:
    # pool_connections=pool_maxsize=0 -> pool closed
    se.mount('https://', HTTPAdapter(pool_connections=100,pool_maxsize=100)) 
    se.mount('http://', HTTPAdapter(pool_connections=100,pool_maxsize=100))
    print(se.adapters["https://"]._pool_maxsize)
    #print(se.get("https://github.com"))
    print(se.get('http://api.ipify.org',proxies=proxy).text)

#100
#118.174.233.31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...