标签:IP 代理 Alive Keep Session cookie https requests
在使用爬虫代理的过程中,由于该产品是自动转发代理,按照每个http请求随机分配一个代理ip的模式进行转发,会导致多个Session的请求ip不一致,如果目标网站进行了判断会按照爬虫限制请求,尤其是一些反爬较多的网站,会出现大量的请求错误。
在使用过程中,通过为requests.session()进行对象锁定,能够让所有的Session保持相同的外网IP,从而快速进行数据采集。注意代理产品的IP有效时间,在代理IP到期之前,必须结束所有的请求,才能保证Session的完整性。另外需要分析目标网站的数据请求,如果需要可以在外网IP的同时,进行cookie的设置。以我最近的项目代理使用部分如下:
#! -- encoding:utf-8 --
import requests
import random
import requests.adapters
# 要访问的目标页面
targetUrlList = [
"https://httpbin.org/ip",
"https://httpbin.org/headers",
"https://httpbin.org/user-agent",
]
# 代理服务器(产品官网 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,
}
# 访问三次网站,使用相同的Session(keep-alive),均能够保持相同的外网IP
s = requests.session()
# 设置cookie
# cookie_dict = {"JSESSION":"123456789"}
# cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
# s.cookies = cookies
for i in range(3):
for url in targetUrlList:
r = s.get(url, proxies=proxies)
print r.text
标签:IP,代理,Alive,Keep,Session,cookie,https,requests 来源: https://blog.csdn.net/Z_suger7/article/details/110956698
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。