"); //-->
隧道转发代理:
“亿牛云爬虫代理IP”通过固定云代理服务地址,建立专线网络链接,代理平台自动实现毫秒级代理IP切换,保证了网络稳定性和速度,避免爬虫客户在代理IP策略优化上投入精力。
简单来说每秒新建http请求,每个http请求随机分配一个代理IP,每个IP有效时间20秒。毕竟是随机分配的,每个http请求分配的代理IP都不一样,那如何保持每个http请求是同一个IP?
采用Proxy-Tunnel自主切换IP:
该模式适合一些需要登陆、Cookie缓存处理等爬虫需要精确控制IP切换时机的业务。 爬虫程序可以通过设置HTTP头Proxy-Tunnel: 随机数, 当随机数相同时,访问目标网站的代理IP相同。
例如 :需要登录,获取数据两个请求在一个IP下,只需对这组请求设置相同Proxy-Tunnel,例如:Proxy-Tunnel: 12345, 该组请求在代理有效期内使用相同的代理IP。
注意 :同一时间不同请求组可以设置不同Proxy-Tunnel: 随机数,并发完成数据爬取。
使用相同IP访问HTTPS目标网站 :1 使用Connection: keep-alive和Proxy-Connection: keep-alive方式访问目标网站,代理会确保在一个会话中的所有请求都通过一个IP到达目标网站 2 设置相同Proxy-Tunnel,有些库封装比较高层次,请务必确认向代理发送了该HTTP头。
class ProxyMiddleware(object): def process_request(self, request, spider): # 代理服务器(产品官网 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 proxyUser = "username" proxyPass = "password" request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort) # 添加验证头 encoded_user_pass = base64ify(proxyUser + ":" + proxyPass) request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass # 设置IP切换头(根据需求) tunnel = random.randint(1,10000) request.headers['Proxy-Tunnel'] = str(tunnel)
通过TCP请求切换IP:
每个TCP请求自动切换,是指爬虫代理为爬虫程序发出的每个TCP请求随机提供一个代理IP,同一个TCP会话中IP不变 通过设置Proxy-Connection: Keep-Alive或Connection: Keep-Alive可以保持同一个Session代理IP不变
例如 需要登录,获取数据两个请求在一个IP下,只需保证该组请求在一个TCP(Keep-Alive)会话下, 该组请求在代理有效期内使用相同的代理IP。
HTTPS 使用爬虫代理访问HTTPS网站时,会自动开启KeepAlive,同一个Session(HTTPS会话)代理IP不变。如需要每个请求强制切换IP,可以设置Proxy-Connection: Close和Connection: Close
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。