某数4,5,6代通杀
没人敢写还是我来写吧,跪求别把我拉走。某数可谓是困扰爬虫界多年,随着陈不不大佬发言,某数渐渐的也不再那么神秘了,但是补环境来说还是难度较大让一些爬友一直止步不前。今天不补环境,也不需要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服务的可以留言'要服务'。 此文章仅供技术学习探讨,如有侵权请联系删除。
转载自:https://juejin.cn/post/7208005547005886523