我想连接到一个被阻止的 URL,使用 python requests。
我使用了许多不同的代理服务器,但没有一个对我有用。 https://free-proxy-list.net/
import requests
x = '46.21.153.16:3128'
http_proxy = "http://"+x
https_proxy = "https://"+x
proxyDict = {
"http": http_proxy,
"https": https_proxy
}
a = requests.get('https://example.com', proxies=proxyDict)
print(a.status_code)
<块引用>
回溯(最近一次调用最后一次):文件“t.py”,第 14 行,在 a = requests.get('https://my-url', proxies=proxyDict) 文件“/home/user/Documents/backend1/venv-livedx/lib/python3.5/site-packages/requests/api.py ”, 第 75 行,在 get return request('get', url, params=params, **kwargs) 文件“/home/user/Documents/livedx/backend1/venv-livedx/lib/python3.5/site-packages/requests/api.py” , 第 60 行,请求中 返回 session.request(method=method, url=url, **kwargs) 文件“/home/user/Documents/backend1/venv-livedx/lib/python3.5/site-packages/requests/sessions.py”, 第 533 行,请求中 resp = self.send(prep, **send_kwargs) 文件“/home/user/Documents/backend1/venv-livedx/lib/python3.5/site-packages/requests/sessions.py”, 第 646 行,发送 r = adapter.send(request, **kwargs) 文件“/home/user/Documents/backend1/venv-livedx/lib/python3.5/site-packages/requests/adapters.py”, 第 510 行,发送 引发 ProxyError(e, request=request) requests.exceptions.ProxyError: HTTPSConnectionPool(host='my-url', 端口 = 443):超过最大重试次数,网址为:/management(由 ProxyError('无法连接到代理。', OSError('隧道连接 失败:403 Forbidden',)))
答案 0 :(得分:2)
流行的网络防火墙阻止流行的用户代理,将它们视为机器人。
复制您的浏览器代理,然后尝试根据请求更改用户代理。我敢打赌请求使用它自己的默认用户代理或 python urllib 之一。
示例:
a = requests.get('https://example.com', headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Safari/537.36'})
答案 1 :(得分:1)
尝试仅使用 http 代理进行连接。 因此,尝试将您的代码更改为:
http_proxy = "http://46.21.153.16:3128"
proxyDict = {
"http": http_proxy,
"https": http_proxy
}
免费代理可能不支持 ssl/tls 连接。
另外,由于您使用的是免费代理,请确保它没有过期。
此外,如果您尝试解析的 url 具有自签名证书,python 请求也可能会失败,因此您必须使用将 verify 参数设置为 False 来发出请求。
a = requests.get('https://example.com', proxies=proxyDict, verify=False)
。