代理ip
爬虫去爬取网站数据的数据的时候,如果单位时间内爬取频次过高,或者其他的原因,被对方识别出来,ip可能会被封禁。这种情况下,通过使用代理ip来解决,作为反爬的策略。
代理ip匿名度:
- 透明的: 服务器知道了你使用代理ip,也知道你真实的ip
- 匿名代理: 知道使用了代理ip,不知道真实的ip
- 高匿代理: 不知道使用了代理ip,也不知道真实的ip(最好的选择)
查看ip 的方法:
- 在cmd输入命令行:ipconfig(内网的ip——私有的地址)
- 浏览器访问:ipip.net (外网,上网的ip)
如果设置代理ip,可以通过httpbin.org/ip来查看。不设置代理ip查看则显示我们的真实ip。即上边的外网ip,上网的ip。
代理可以从快代理或豌豆代理处付费获得。(也有可以免费试用的的几个)
查看我们的真实ip的代码:
import requests
url = "http://httpbin.org/ip"
res = requests.get(url)
print(res.text)
输出结果显示真实ip。
设置代理ip:
# 设置一个代理ip,以字典形式呈现,代理ip写在字典值中
proxy = {
'http': 'xxx.xx.xxx.xxx:xxxx'
}
res = requests.get(url, proxies=proxy)
print(res.text)
输出结果显示设置的代理ip。
选出5个ip为例,从中随机选择一个试用,选5次,且出现异常时避免报错。时间间隔设置为1。
'''
36.6.149.154:xxx
114.233.125.55:xxxxx
117.26.229.24:xxx
122.241.27.24:xxxxx
61.132.171.215:xxx
'''
import random
ips = [('36.6.149.154:xxx'),('114.233.125.55:xxxxx'),('117.26.229.24:xxx'),('122.241.27.24:xxxxx'),('61.132.171.215:xxx'),]
url = 'http://httpbin.org/ip'
for i in range(5):
try:
ip = random.choice(ips)
res = requests.get(url, proxies={
'http':ip}, timeout=1)
print(res.text)
except Exception as e:
print('出现异常', e)