各大网站反爬手段汇总。
之前研究完时间久了就忘了,用那么就研究的js解密,回头全忘了太亏了。
简单写几笔。
0.大众点评
github链接(欢迎点star)
1.亚马逊
这个我没有实操,html页本身没有什么重点,比较简单。
主要是cookie会过期(ban),但是亚马逊在第一次访问的时候会给你一个session_id,它是由你的user-agent决定的。
这时候你只需在一开始的时候通过虚假user-agent大量获取session_id,用session_id作为cookie(只须)就可以进行访问。
在cookie失效的时候切换下一个session_id。
2.优酷
优酷的话,这里以优酷弹幕为例。
优酷弹幕首先是通过
o = {
pid: 0,
ctype: 10004,
sver: '3.1.0',
cver: 'v1.0',
ctime: (new Date).getTime(),
guid: f.a.getCookie('cna') ? f.a.getCookie('cna') : '',
vid: r,
mat: n,
mcount: 1,
type: 1
},
这段,来生成一段信息,值得一提的是这里 使用guid了cookie的cna信息。
这也就导致,这个方法(接口)会随着cookie的失效失效。
但是恰巧,这个cna信息是由本地生成发往服务器校验的;和亚马逊有点类似。
代码如下:
key: 'cookieHandler',
value: function (e, t, n, r) {
if ('string' === typeof e && (r = n, n = t, t = e, e = window), 'undefined' === typeof n) return (n = e.document.cookie.match(new RegExp('(?:\\s|^)' + t + '\\=([^;]*)'))) ? decodeURIComponent(n[1]) : null;
var i,
o = '';
(r = r || {
}).expires && ((i = new Date).setTime(i.getTime() + 24 * r.expires * 60 * 60 * 1000), o = '; expires=' + i.toGMTString());
var a = r.path ? '; path=' + r.path : '',
u = r.domain ? '; domain=' + r.domain : '',
l = r.secure ? '; secure' : '';
e.document.cookie = [
t,
'=',
encodeURIComponent(n),
o,
a,
u,
l
].join('')
}
},
通过this.cookieHandler(‘cna’)就可以获取到cna信息。
3.腾讯视频
腾讯视频的弹幕没有任何加密哈哈哈
4.QQ音乐
QQ音乐歌单信息:
首先检查请求:
响应中有歌曲信息:
可以看出有加密参sign。检查sign参数路径:
在music.js的1548行有sign为g,而查看music.js则可以发现g为getSecuritySign()获取了sign。
检查后发现与输出一致。
2 条评论
abin · 2021-05-22 16:12
亚马逊还是对ip有限制的,然后每次返回的内容也会在次数多了之后给一些假数据
Sniper · 2021-05-23 10:53
不会,提前生成一堆sessionid后,封了就换,不会涉及假数据。这个方法做到过日采集千万。