2022-09-03
记录一下自己最近遇到的python开发问题 由于在下需要访问外网,但是所需要爬取的外网大数据被GFW给墙了,ping能通,但是总是远程主机强制断传,分析一下应该是域名被黑名单了
然后准备采用挂vpn的方式,通过远程节点爬取数据
但是在挂vpn的时候发现使用pycharm对外网发送请求返回错误,关掉vpn后使用pycharm能够正常访问,在下也是想了好多方法,在网上找了一堆教程也没有解答,一开始怀疑是pycharm本身自带的虚拟环境的问题,导致远程节点部署完毕后,request请求没有通过远程节点发送,实际还是从本地发送的请求,但是在重新构建虚拟环境后发现,还是没法进行远端请求发送
HTTPSConnectionPool(host='127.0.0.1', port=443)
出现port = 443 错误
查了虚拟环境,确实请求走的是本地,而不是远端部署的节点,测代理访问网络的ip确实是更改了,在下有陷入了呆滞状态,中间一定是哪里出了问题
一顿好找之后让我在代码里找到了
import requests
os.environ['NO_PROXY'] = 'https://www.xxx.com ,https://aws.xxx.com'
Pycharm里使用自动代理,测试可以链接,但是程序调试还是报443
那问题应该就是出现在request请求封装的代理上了
后来找到了解决方法
python解释器里配置的包的错误
pip install urllib3==1.25.11
通过降低这个引入包的版本就没问题了
测试在挂着vpn的情况下,程序也能够通过远程节点访问到外网爬取数据了(狂喜)
关于对request代理错误导致python程序无法通过代理发送请求的问题
具体可以看这篇文章对request封装的代理请求出现的问题分析