作为爬虫工作者在日常工作中使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁 IP 的问题通常会使用代理IP。但也有一部分人在HTTP代理IP的使用上存在着误解,他们认为使用了代理IP就能解决一切问题,然而实际上代理IP不是万能的,它只是一个工具,如果使用不当,一样会被封IP。
如果是使用的透明代理IP自然会受到限制,但是使用的是高匿名代理则不会,所以在选择代理IP的时候,要注意这一点。还有就是在使用一个代理IP爬取目标网站,被封IP的因素也有很多,比如cookie,比如User Agent等等,或者IP的单次使用频率太高,IP就会被封;当访问目标网站的频率过快时,IP也会被封,因为人类正常访问远远达不到那个频率,自然会被目标网站的反爬虫策略识别。
这样的情况下我们只有尽量地模拟真实用户正常访问,才能最大程度地避免被封IP。而高匿代理IP也不难找,比如亿牛云(www.16yun.cn)提供电信家庭私密高匿代理ip就能满足大家的需求。并且针对代理的使用还提供了专业的文档,如果你的爬虫程序是使用的python,如果购买的是爬虫代理,那么正确的使用代理IP的过程如下:
代码语言:javascript复制#! -*- 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
还有其他的语言示例可以选择,有需要的可以在官网去了解 https://www.16yun.cn/help/ss_demo/#