中国裁判文书网 爬虫求助

2017-06-23 09:34:31 +08:00
 zbl430

http://wenshu.court.gov.cn/

裁判文书网最近更新了反爬策略,然后一直没有搞懂,希望大神可以帮忙

url = "http://wenshu.court.gov.cn/List/TreeContent"
data = {
    'Param': '上传日期:2017-06-21 TO 2017-06-22,案件类型:赔偿案件'
}
re = requests.post(url, data=data, headers=headers, timeout=60)

这样已经得不到数据了,即使加了 headers

求大神帮忙!!!

9467 次点击
所在节点    Python
45 条回复
zbl430
2017-12-12 11:25:34 +08:00
@Mrkon 个人觉得,能把你需要的 js 转成 python 写的就行了,没必要特意去学,很多技术都是现学现搞,日后加深
Hombin
2017-12-12 16:20:32 +08:00
@Mrkon list 页面的 js 中都没有看到 getkey()函数,请问是在哪里可以找出这个函数的定义?
Mrkon
2017-12-12 17:45:54 +08:00
@zbl430 恩,谢谢,已关注,以后多交流啊
Mrkon
2017-12-12 17:59:03 +08:00
@Hombin 首先网站是: http://wenshu.court.gov.cn/List/List? 后面常常会跟一堆参数
其次在最后。。。我不会发截图,函数在最后两段,还特地给你标注了”//函数(两段必须的)“ ,找定义要善于 firebug
vs412237401
2018-01-24 14:15:30 +08:00
这个数据的爬取没有什么难度的,请看 openlaw.cn
zbl430
2018-01-25 09:35:38 +08:00
@vs412237401 它网站的数据还没我的多呢...
wenziyue
2018-03-22 14:08:34 +08:00
@zbl430 大佬你好,我现在正在做这个网站的爬虫,现在它页面源码里获取 vjkl5 的 getkey 函数貌似被混淆了,现在没法获取 vjkl5 的值了,搞得我现在焦头烂额,不知道该怎么做了,请问大佬有什么好的解决办法么?希望能回复啊,多谢多谢
wenziyue
2018-03-22 16:12:12 +08:00
@Mrkon 大佬你好,我现在正在做这个网站的爬虫,现在它页面源码里获取 vjkl5 的 getkey 函数貌似被混淆了,现在没法获取 vjkl5 的值了,搞得我现在焦头烂额,不知道该怎么做了,请问大佬有什么好的解决办法么?希望能回复啊,多谢多谢
zbl430
2018-03-22 19:15:58 +08:00
@wenziyue 那就运行这段函数啊,用 py 去运行 js,你百度应该有方法
wenziyue
2018-03-23 17:03:46 +08:00
@zbl430
function getKey() {
var aaaafun = function (p, a, c, k, e, d) { e = function (c) { return (c < a ? "" : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) d[e(c)] = k[c] || e(c); k = [function (e) { return d[e] } ]; e = function () { return '\\w+' }; c = 1; }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p; }
eval(aaaafun('7 8(2,4,3){5 6=3.9(\'|\');a(5 1=0;1<4;1++){2=2.f(e b(\'\\\\{\'+1+\'\\\\}\',\'c\'),6[1])}d 2}', 16, 16, '|i|str|strReplace|count|var|arrReplace|function|de|split|for|RegExp|g|return|new|replace'.split('|'), 0, {}))
eval(de("{15}un{12}tion {4}str) {v{10}r long = 0;{15}or (v{10}r i = 0; i < str.l{14}ngth; i++) {long += {9}(i) << (i % 16));}r{14}turn long;}{15}un{12}tion {0}(str) {v{10}r long = 0;{15}or (v{10}r i = 0; i < str.l{14}ngth; i++) {long += {9}(i) << (i % 16)) + i;}r{14}turn long;}{15}un{12}tion {0}2(str,st{14}p) {v{10}r long = 0;{15}or (v{10}r i = 0; i < str.l{14}ngth; i++) {long += {9}(i) << (i % 16)) + (i * st{14}p);}r{14}turn long;}{15}un{12}tion {0}3(str, st{14}p) {v{10}r long = 0;{15}or (v{10}r i = 0; i < str.l{14}ngth; i++) {long += {9}(i) << (i % 16)) + (i + st{14}p - str.{12}h{10}rCo{13}{14}At(i));}r{14}turn long;}{8}0(str) {v{10}r str = str.{3}5, 5 * 5) + str.{3}(5 + 1) * (5 + 1), 3);v{10}r {10} = str.{3}5) + str.{3}-4);v{10}r {11} = str.{3}4) + {10}.{3}-6);r{14}turn {2}).{3}4, 24);}{8}1(str) "strToLongEn|strToLong(str.substr|hex_md5(str|substr(|strToLong(|hex_md5(|base.encode(|new Base64();|function makeKey_|(str.charCodeAt|a|b|c|d|e|f"))

多谢回复啊,他现在网页源码里这个 js 函数都是这样的一堆东西,我只贴了一部分,代码是混淆过的,这种东西没法运行的吧。。。
OxhydrylLithium
2018-04-03 16:35:08 +08:00
@wenziyue 是的, 这个是 packed 包装过的。特征字符串是"eval"开头。把 var aaaafun 的定义替换到第一个 eval 之后的 aaaafun。在执行一次解密,依此类推。 给你一个可以用来解密的网站: http://matthewfl.com/unPacker.html
wenziyue
2018-04-08 19:38:09 +08:00
@OxhydrylLithium 太感谢了!已经解密出来了,多谢多谢!
zc15238092914
2018-04-09 14:06:24 +08:00
@wenziyue getKey()怎么解出来的,是用 pyv8 吗?用 python 执行这个 js 函数时,一直报错
zbl430
2018-04-09 14:13:48 +08:00
@zc15238092914 #33 f12 用浏览器的 console
wenziyue
2018-04-09 19:48:21 +08:00
@zc15238092914 我是用楼上大神给的网站把混淆过的 js 代码还原了,然后用 pyv8 执行还原的 js 得到了 vl5x,我不清楚用 pyv8 执行混淆的 js 能不能得到结果,但是现在几个参数都有了,向 http://wenshu.court.gov.cn/List/ListContent 发 post 请求返回的结果为空。。。头疼
wenziyue
2018-04-09 19:51:33 +08:00
@zbl430 大神,我现在用 pyv8 执行 js 能获得 vl5x 了,几个参数现在都有了,但是向 /List/ListContent 发 post 请求返回的结果为空,按理说它应该返回一个 json 啊,是需要加 cookie 吗?
wenziyue
2018-04-09 19:52:34 +08:00
@OxhydrylLithium 大神你好,我用你的方法获得了 vl5x,几个参数现在都有了,但是向 /List/ListContent 发 post 请求返回的结果为空,按理说它应该返回一个 json 啊,是需要加 cookie 吗?
zbl430
2018-04-10 09:30:39 +08:00
@wenziyue #36 那你的 vl5x 和浏览器算出的做对比,看看是不是一样, 比如 vjkl5=cf370b569dff2cad90014e18a63dba0705ba2384, 算出的 vl5x 是 57210fbd1e1b17173950aa8b
wenziyue
2018-04-10 09:48:22 +08:00
@zbl430 这个我对比过了,完全一样,参数应该没问题,但是不清楚为什么返回的数据为空,加了 cookie 和 referer 也依然没用,项目本来说的今天要上线,现在还没做出来,已经快疯了,大神我能加你个 Q 问你一下吗
zc15238092914
2018-04-10 09:50:54 +08:00
@wenziyue 我也用那个网站处理了 js,但是执行,一直报 SyntaxError: Unexpected token ILLEGAL ( @ 29 : 22 ) -> eval(aaaafun('7 8(2,4,3) ,有解决方案吗?或者加个微信 zhangchenchen123123,交流下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX