本文已参加「新人创作礼」活动, 一起敞开掘金创作之路。
没人敢写仍是我来写吧,跪求别把我拉走。某数可谓是困扰爬虫界多年,随着陈不不大佬讲话,某数逐渐的也不再那么奥秘了,但是补环境来说仍是难度较大让一些爬友一直止步不前。今日不补环境,也不需要webdriver。让老衲取出照妖镜将他擒来 话不多说,直接进入主题网站地址
1.老一套,先清cookies再抓包,刷新一下页面
通过N次202之后回来了200,盲猜N次的202是在生成cookies吧,搂一眼
可见每次202 cookies都在变化,neCYtZEjo8GmP参数可见这便是传说中的R数5代了。不闹了这次真的要开端表演了
2.今日咱们用rpc绕过R数5代cookies生成,关于rpc的介绍这儿不在论述,还不了解的朋友能够移步了解一下,rpc爬虫介绍 2.1首先要添加一个js文件来模仿jsva对衔接发送恳求 2.2内容这儿写入rpc通用办法,这儿也不做论述了 2.3主要函数,搭建一个客户端接收python的恳求并回来数据
function guid() {
function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
var client = new SekiroClient("ws://127.0.0.1:5620/business-demo/register?group=nmpa&clientId="+guid());
client.registerAction("nmpaa",function(request, resolve,reject ){
// console.log(request)
resolve(""+getauthor(request.page));
})
window.onload=guid();
2.4主要函数,接收到参数之后添加headers等信息对衔接大宋恳求并回来数据
function getauthor(url) {
var a, s, u = new window.XMLHttpRequest;
u.open("GET",url, false)
console.log(page)
u.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
u.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// u.send(true && "id=1000845860&pageIndex=1&pageSize=500&typeName=ckwx" || null)
// u.send(true && id+'&'+pageIndex+'&'+pageSize+'&'+typeName|| null)
u.send()
if(4 === u.readyState){
return u.responseText;
}
}
- ok,这儿js部分就ok了接下来是运用python向这个服务端发送数据
for page in range(1, 4):
params = {"group": "nmpa", # 接口称号
"action": "nmpaa", # 注册的服务名
'page': f'/ylqx/ylqxjgdt/index_{page}.html'}
time.sleep(1)
response = requests.get(url, params=params)
这儿需要留意group是接口称号和SekiroClient中接收的衔接对应,nmpaa是服务名和js中搭建的服务端对应,一个服务端能够有多个接口(客户端) 4. ok便是这么简略,接下来便是运行js代码,打开rpc服务,然后走两步。
可见这个速度仍是能够的,找不到rpc服务的能够留言’要服务’。 此文章仅供技术学习探讨,如有侵权请联系删去。