python 爬虫 付费代理
问题描述:
今天写爬虫程序用了一下付费代理,众所周知,用代理可以通过使用海量的ip应对网站的反爬虫机制。
使用的是python语言,先用的requests库,核心代码如下:
def get_random_proxy():#随机选择一个代理ipip_list = getIpList()random_ip = ip_list[random.randint(0,len(ip_list)-1)]res = {'http':'http://用户:密码@' + random_ip,'https': 'https://用户:密码@' + random_ip}return resdef open_url(url):header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'}response = requests.get(url , proxies=get_random_proxy(),headers=header)return response.content
为了检测一下代理是否成功,我用open_url()函数访问了http://httpbin.org/get,发现每次返回的ip都不一样,说明这个代理成功了。
为了进一步验证,我又使用open_url()函数访问了https://2021.ip138.com,结果出现了问题。报了“407代理需要认证”这个错误。我检查了一下上述代码中https的用户和密码发现没有写错。在网上也没收到这种情况的解决方案。
尝试解决:
1.跳过ssl证书验证
因为http网站能正常访问,而https网站就出问题了,所以我尝试了一下在requests发起请求时加上verify=False这个参数,让它跳过ssl证书验证。
response = requests.get(url , proxies=get_random_proxy(),headers=header,verify=False)
结果,依然报“407代理需要认证”。
2.联系代理提供商
联系了一下代理提供商的客服,说认证一般就是账号密码认证或者白名单。我尝试了一下将自己的ip添加到白名单,但是又不知道自己的公网ip地址是多少。因为不同ip查询网站上显示的ip都不一样,我索性把上述提到的两个ip查询网站上的ip和内网ip都加到了白名单上。再次尝试,还是407。后来发现我在使用代理的时候它会自动把我的ip加入到白名单,但是,管他呢,依然407。
3.测试代理可用性
我随便选择了一个代理ip,把它设为我的win10系统的代理服务器。然后用浏览器访问百度,弹出让我输入账号密码认证,我输完之后页面还是没加载出来。我又访问http://httpbin.org/get,又弹出让我输入账号密码,我输入之后网页正常显示。然后我又访问百度等其他页面,这时就不用了输入账号密码了,就像平时上网一样。
做完这番验证之后,推断该代理本身是可以访问https网站的,问题可能出在python的requests上。
4.尝试urllib
既然requests不行,那就试试urllib。
def open_url(url):proxy_support = urllib.request.ProxyHandler(get_random_proxy())opener = urllib.request.build_opener(proxy_support)header=('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1')opener.addheaders = [header]response = opener.open(url)return response.read()
于是修改open_url()为上述代码。再用open_url()访问https://2021.ip138.com,访问了好几次,发现有时候报ssl错误或者407错误,有时候可以正常访问。而且返回的ip地址不一样,说明使用代理成功了。
就这样用代理爬了一会数据,也是一会报错一会正常,可以爬到点数据。然而,过了一会又爬不到数据了,问题是命令行也不弹错误了。然后重新运行发现全是ssl错误,一次正常访问都没有。what happened。心累啊。
python 爬虫 付费代理相关推荐
- python爬虫设置代理ip池
在使用python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,那如何解决呢?使用代 ...
- python爬虫设置代理ip池——方法(一)
""" 在使用python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网 ...
- Python 爬虫使用代理 IP 的正确方法
代理 IP 是爬虫中非常常用的方法,可以避免因为频繁请求而被封禁.下面是 Python 爬虫使用代理 IP 的正确方法: 1. 选择可靠的代理 IP 供应商,购买或者免费使用代理 IP 列表. 2. ...
- 【实战】Python爬虫之代理使用详解
在Python爬虫中,代理的使用非常常见.代理的主要作用是隐藏客户端的真实IP地址,从而实现更高的网络访问速度和更好的访问隐私保护.下面我们将通过Python爬虫的实例,带你详细了解Python爬虫中 ...
- python爬虫使用代理ip_python爬虫如何设置代理ip
python爬虫设置代理ip的方法:首先写入获取到的ip地址到proxy:然后用百度检测ip代理是否成功,并请求网页传的参数:最后发送get请求,并获取返回页面保存到本地. [相关学习推荐:pytho ...
- python爬虫面试代理池_python - 如何为爬虫构建代理池
问 题 为了避免爬虫被封 IP ,网上搜索教程说需要建立代理池.但是付费代理都好贵...不过好在网上已经有不少免费提供代理的网站了.因此,我打算写个爬虫去获取这些免费 IP - 策略步骤 用种子关键词 ...
- Python爬虫-IP代理池和代理池设计
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:小小科 ( 想要学习Python?Python学习交流 ...
- python爬虫ip代理池_爬虫教程-Python3网络爬虫开发——IP代理池的维护
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 准备工作 要实现IP代理池我们首先需要成功安装好了 Redis 数据库并启动服务,另外还需要安装 Aiohttp.Requests.RedisPy.PyQ ...
- python爬虫免费代理池_Python爬取免费代理搭建代理池
我们在做爬虫的过程中经常会遇到这样的情况:最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403Forbidden:这时候网页上可能会出现 "您 ...
最新文章
- Nature子刊:用16S及18S rRNA全长进行微生物多样性研究
- 黄海广博士的机器学习个人笔记及深度学习笔记
- 【BZOJ】3771: Triple FTT+生成函数
- libnids抓不到包
- Hadoop中-put和-copyFromLocal的区别
- Spring Boot 实战系列课程终于齐啦~
- implementation of UI5 bindAggregation - busyDialog is handled automatically
- 固态硬盘 linux 文件系统,SSD是否需要使用特别的文件系统?
- 回顾Google IO 2016 -Keynote【图解】
- mysql查看前十行_head 命令 读取文件的前n行,默认查看文件的前十行
- 如何阅读PBRT3?
- 自然语言处理课程作业 中文文本情感分类
- 惠普笔记本电脑重装系统后找不到引导设备
- qq2007服务器中断,自动重启pubwin2007服务器脚本
- 【R】【课程笔记】04+05 数据预处理+收益率计算
- 中州韵输入法 linux 小鹤双拼,在deepin 15.10系统fcitx框架下添加rime小鹤双拼的方法...
- excel电子表格插件_电子表格的美好时光
- 计算机网络 万维网的文档
- 火狐(FireFox)黑客常用插件
- dell中小企业商用台式机Vostro4667 win10家庭中文版重装成win7版
热门文章
- Dnsmasq (简体中文)
- 大宋王朝王国的命运——何辉著
- [笔记]SSH 端口转发
- 还在埋头干活?给程序员的几个忠告
- leetcode 回溯算法 17. 电话号码的字母组合
- 终端软件测试风险,浅谈三大终端测试 - 测试泡泡 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- intel 服务器芯片8180,Intel Xeon Platinum 8180M报价52000
- ios与安卓的时间兼容问题
- 潘多拉游戏机用linux,linux中的潘多拉! Busybox!
- Kernel Knights (Gym - 101480K)