作为爬虫工作者,在我们日常获取数据的过程中难免发生ip被封和403错误等等,这都是网站检测出你是爬虫而进行反爬措施,所以今天在这里为大家总结一下怎么用IP代理防止被封的方法。
1、设置等待时间,种是显性等待时间(强制停几秒),一种是隐性等待时间。
2、修改请求头:识别你是机器人还是人类浏览器浏览的重要依据就是User-Agent。
3、采用代理ip/建代理ip池,直接看代码。利用动态ip代理,可以强有力地保障爬虫不会被封,能够正常运行。以下为使用代理ip的实际示例,在使用IP量上需要看自己的需求,大型项目是必须用大量ip的。
#! -*- encoding:utf-8 -*-
import requests
import random
# 要访问的目标页面
targetUrl = "http://httpbin.org/ip"
# 要访问的目标HTTPS页面
# targetUrl = "https://httpbin.org/ip"
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
# 设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text只有我们在采集数据过程中做好以上3个步骤,大致爬虫的运行就不成问题了。但是这些都是基本的反爬措施,现在有很多大型网站做设置的反爬机制更严,对技术要求更高,所以需要我们随时学习更深的爬虫技术。
随时随地看视频