python - Python 请求连接到被阻止的服务器
问题描述
我想使用 python requests连接到一个被阻止的 URL 。
我使用了许多不同的代理服务器,没有一个对我有用。 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)
Traceback(最近一次调用):文件“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', port=443):最大重试次数超过 url:/management (由 ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden',)))
解决方案
流行的网络防火墙阻止流行的用户代理将它们视为机器人。
复制您的浏览器代理,然后尝试根据请求更改用户代理。我敢打赌 request 使用它自己的默认用户代理或 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'})
推荐阅读
- rust - 我如何使用 rust 进行并行请求并在之后收集结果?
- reactjs - React.Component 类构造函数在没有 console.log 的情况下运行一次?
- spring - 如何在 Spring Service 或 Controller 中获取 JWT 声明
- tensorflow - 如何更改预训练 keras 模型的输入尺寸?
- react-native - 如何使用身份验证或注册、登录和注销来制作 React Native 和 Graphql 应用程序
- codeigniter - CodeIgniter 4 新闻项目教程:路由问题
- c# - C# WPF 更改帧源
- node.js - Puppeteer 等待框架被分离
- javascript - 如何从此图像中删除所有非文本/数字?
- node.js - Elastic Beanstalk 上的节点 JS 应用程序不允许上传大文件