网络上有大量免费且公开的代理可以供我们使用,但这些代理并不能保证都可以使用,因为同样的代理可能被其他人拿来爬虫使用而遭到封禁,因此,在真正使用之前,我们需要对这些免费代理进行筛选,剔除那些不能使用的。保留下可以用的,来构建一个代理池,供我们爬虫使用。
因此我们首先需要在网络中寻找免费的代理数据, 然后搭建一个代理服务去筛选可用的代理,通过链接接口的形式供爬虫项目去调用。
代理IP,又称代理服务器,是网络信息的中转站,它是介于浏览器和Web服务器之间的一台服务器。
Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。
代理类型大致分为三类。透明代理、普匿代理、透明代理。
透明代理传送的依然是真实IP地址,客户端不知道代理服务器的存在。
普匿代理可以隐藏用户真实IP,但会改变请求信息,使对方服务器识别出使用了动态ip代理。
高匿代理能够隐藏用户的真实IP地址,同时不会被识别为代理。
1.解决网络延时,提高运行速度。
2.可做防火墙,提高安全性。
3.影藏IP地址,保护个人信息。
4.突破访问地址限制。
实际上,免费代理的核心风险,就是欺骗用户通过它们中继流量并不情愿地交出敏感数据。
# 高可用全球免费代理IP库
http://ip.jiangxianli.com
# 西拉代理
http://www.xiladaili.com/
# 神鸡代理
http://www.shenjidaili.com/
# 89免费代理
http://www.89ip.cn/index.html
# 极速代理
https://www.superfastip.com/
# 云代理
http://www.ip3366.net/free/
# 米扑代理
https://proxy.mimvp.com/
# 快代理
https://www.kuaidaili.com
# pzzqz代理
https://pzzqz.com/
# 小幻代理
https://ip.ihuan.me/
# 66代理
http://www.66ip.cn/
# 免费代理IP
http://ip.yqie.com/ipproxy.htm
# 无忧代理
http://www.data5u.com/
# 全网代理IP
http://www.goubanjia.com/
# seo方代理
https://seofangfa.com/proxy/
# 小舒代理
http://www.xsdaili.cn/
# 飞猪代理
https://www.feizhuip.com/
# 齐云代理
https://www.7yip.cn/free/
# 爬虫代理
http://www.pachongdaili.com/free/freelist1.html
搜索代理ip
,能够发现有很多付费代理服务站点
目前付费代理站点一般注册后,会有免费的测试代理用量,学习阶段用免费的做测试就够用了。不过现在代理网站普遍都需要实名认证,也会有站点的工作人员联系你添加联系方式,额外也会送你一些ip测试。
代理服务网站:品易HTTP,用其他网站的代理服务也可以,使用方法大同小异
品易HTTP网址:https://http.py.cn?invitation_code=BX1YBHg2YEl8IHEOVQR/WHhRWl5nYV1uXw5kJiAFLlYqYwowPy4=
手机号注册,登录后实名认证,即可到账免费测试金额
根据情况自选选项,生成获取代理的api接口。
import requests
def get_proxy():
url = 'http://zltiqu.pyhttp.taolop.com/getip?count=1&neek=13873&type=2&yys=0&port=2&sb=&mr=2&sep=0'
proxy_json = requests.get(url=url).json()
print('获取的代理:', proxy_json)
ip = proxy_json['data'][0]['ip']
port = str(proxy_json['data'][0]['port'])
proxies = {
# "http": "http://" + ip + ':' + port,
"https": "http://" + ip + ':' + port,
}
return proxies
if __name__ == '__main__':
proxies = get_proxy()
print('代理:', proxies)
# 使用代理发送请求
response = requests.get(url='https://www.baidu.com', proxies=proxies)
print(response.text)
{'code': 0, 'data': [{'ip': '223.214.30.18', 'port': 64257}], 'msg': '0', 'success': True}
获取到代理ip后,即可在requests请求的时候,携带proxies
关键字参数进行代理伪装的请求。
import requests
def get_proxy():
url = 'http://zltiqu.pyhttp.taolop.com/getip?count=1&neek=13873&type=2&yys=0&port=2&sb=&mr=2&sep=0&username=chukou01&spec=1'
proxy_json = requests.get(url=url).json()
print('获取的代理:', proxy_json)
# ip = proxy_json['data'][0]['ip']
# port = str(proxy_json['data'][0]['port'])
#
# proxies = {
# # "http": "http://" + ip + ':' + port,
# "https": "http://" + ip + ':' + port,
# }
# return proxies
if __name__ == '__main__':
# 默认情况下此平台对请求速率有限制
for i in range(3):
proxies = get_proxy()
print('代理:', proxies)
# 一般192.168.xxx.xxx 局域网ip
# 一般xxx.xxx.xxx.xxx 公网ip都不一样
一个项目中使用到了课程中这个平台的代理,然后项目打包发送给其他人使用的时候,会导致不可用。原因是品易HTTP这个代理平台仅针对白名单ip发送的请求才会返回代理数据,如果没有请求ip没有在白名单中,那么返回的数据中会提示ip不在白名单,如下所示:
那么需要将此代理在用户个人中心页面添加白名单:
默认情况下品易HTTP这个平台请求接口请求的速率是2秒钟,速度过快会不返回代理数据,如下所示:
通过询问平台客服得知在请求代理的api接口地址中添加如下查询参数即可解决:
&username=chukou01&spec=1