本文主要是介绍拉勾网访问显示操作太频繁解决思路,用session获取cookie添加到请求头(报文)里,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
拉勾网的职位界面使用ajax技术,在原网页代码无法获取搜索的职位信息。
1.抓包分析 ,
!
通过反复观察,找到了信息职位的界面,根据这个数据包的信息制作头部信息
headers = {
'User-Agent': random_user, #随机用户
"Referer":"https://www.lagou.com/jobs/list_python/",# 从哪个访问过来
"X-Anit-Forge-Token":"None",
"X - Anit - Forge - Code": "0","X - Requested - With":"XMLHttpRequest"
}
制作表单
data = {"first":"true",
"pn":1, # 这里是页码
"kd":"python"
}response = requests.post(url_2, headers=get_headers(), data=data,proxies=proxies_ip,timeout=5)
print(response.json())`
请求后提示
{‘status’: False, ‘msg’: ‘您操作太频繁,请稍后再访问’, ‘clientIp’: ‘171.35.148.185’, ‘state’: 2402}
2.分析这里请求头除了cookie信息没有添加其余都加入进去,本来想着用手动复制,但是复制进入报头后是这样
天哪,好长的cookie,一点点整理,删除空格换行符实在是太麻烦了,懒得手动去弄(其实主要原因是cookie是会失效的,如果失效后每次都手动修改,这也太那啥了。。。),作为一个天才的程序员(自夸下),肯定有其他什么办法的。想起来之前看的关于cookie和session,一句话概括,大概就是http是无状态协议,我们第一次访问的时候会产生一个cookie,网站服务器的session会把session_ID 添加到cookie里在把cookie发送会给访问者,这样下次再次访问网站滴时候再次发送cookie,网站获取到了cookie里的session_ID就知道了访问者是之前的那位,那么思路就有了,查下找session的相关文档
3.找到了相关代码,用session访问网站静态页面网站返回的cooike添加到报头里
session = requests.session() # 访问session,打开sessionsession.get(url_1,headers = get_headers())# 打开静态网页,讲cookie放入sessioncookies = session.cookies # 赋值session中的cookiescookies = cookies.get_dict()# 类转换成字典print(cookies)
4.打印出来获取到了发现获取到了cookie,把我们的cookie加入请求在访问网站的数据动态网页
response = requests.post(url_2, headers=get_headers(), data=data,proxies=proxies_ip,cookies=cookies,timeout=5)if response.status_code == 200:print(response.json())
获取到了网站数据,我厉害不厉害。。。快给我点赞
这篇关于拉勾网访问显示操作太频繁解决思路,用session获取cookie添加到请求头(报文)里的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!