作者vi000246 (Vi)
看板Ajax
标题[问题] 爬虫遇到slowAes加密的网页
时间Fri Oct 21 15:09:19 2016
附上范例 想用C#重现这段JS
https://jsfiddle.net/ayfm1bq6/3/
我写了爬虫想爬某个网站
那网站需要按一个按钮 触发JS产生COOKIE
有这COOKIE才能登入
以下是部份的源码
function toNumbers(d) {
var e = [];
d.replace(/(..)/g, function(d) {
e.push(parseInt(d, 16))
});
return e
}
function toHex() {
for (var d = [], d = 1 == arguments.length && arguments[0].constructor =
arguments[0] : arguments, e = "", f = 0; f < d.length; f++) e += (16 > d[f] ? "
return e.toLowerCase()
}
function Decode() {
var a = toNumbers("2c74fc8f6cbd3aac4dbd79d854eee1b0"),
b = toNumbers("5907dbd743bae6749df54fc54f81e447"),
c = toNumbers("7d74f260ffbe6844f2c77cba7446350c");
document.cookie = "verifid=" + toHex(slowAES.decrypt(c, 2, a, b)) + "; max-age=" + 60 * 60 * 24 * 1 + "; path=/";
window.location.href = "
http://www.xxxxx.html?attempt=1";
}
按下按钮会呼叫Decode()附加cookie後转页
slowAew是引用这个套件
https://greasyfork.org/zh-TW/scripts/13883-aes-js/code
我试着直接拿手动产生出来的COOKIE可以过
但换了另一台电脑就不行了
看来还是要模拟JS的行为
想问爬虫遇到这种网站要怎麽辨呢
GOOGLE不太到解决办法
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.61.240.91
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1477033763.A.609.html
※ 编辑: vi000246 (210.61.240.91), 10/21/2016 18:00:09
※ 编辑: vi000246 (210.61.240.91), 10/21/2016 18:07:05
1F:→ Neisseria: 可以用 Selenium 之类的软体去爬网页 10/21 18:38
2F:→ Neisseria: Selenium 会开真的浏览器去爬指定的网页 10/21 18:38
3F:→ Neisseria: 再把爬回来的网页原始码慢慢解析出要的资料即可 10/21 18:39
4F:→ vi000246: 刚研究一下Selenium可以在C#里使用 我再试试看 感谢 10/21 22:14
我最後是用C#的Jint lib解决了
※ 编辑: vi000246 (101.10.83.64), 10/22/2016 15:18:52