中国裁判文书网 爬虫求助

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

求大神帮忙!!!

9435 次点击
所在节点    Python
45 条回复
samray
2017-06-23 10:26:36 +08:00
首先,你的浏览器要能访问你要爬取的网站的 url .但是似乎  http://wenshu.court.gov.cn/List/TreeContent  浏览器是打不开的.
eoo
2017-06-23 10:44:33 +08:00
页面已经挂了。
lzhr
2017-06-23 13:12:40 +08:00
404
Chingim
2017-06-23 13:33:47 +08:00
有时候 bug 就是那么简单,但是发现之前你已经被搞得吐血。

发自吐血的某某
lzhr
2017-06-23 13:42:45 +08:00
zbl430
2017-06-23 17:22:42 +08:00
@samray 这个是 post 接口,不好意思,忘说明了
zbl430
2017-06-23 17:24:01 +08:00
@Chingim 看来大神有解决方案了,已经被虐很久了,求指教
zbl430
2017-06-23 17:24:29 +08:00
@lzhr 然而用代码就不行
samray
2017-06-23 17:39:24 +08:00
@zbl430 试试加上 cookie
Chingim
2017-06-23 19:34:26 +08:00
@zbl430 没有啊, 我以为 bug 就是 404
libraor
2017-06-26 20:07:43 +08:00
同道中人啊,友情支持下
tangzipeng
2017-06-29 18:05:49 +08:00
友情帮顶一下,我也卡在这个网站上了,主要是 Cookie 是加密处理的,然后 js 还是混淆的~ 应该是个叫瑞数信息的公司搞的产品,很多网站在用……
simapple
2017-08-30 16:48:38 +08:00
这个网站 很有意思,每一次请求翻页都要过一次验证码,加密一次密钥,带密钥访问下一个页面,你自己查看每次 http 请求的细节,就能方便的搞定了
McooLewis
2017-08-30 20:58:42 +08:00
@simapple 哥们你好,请问你知道他这个验证码是怎么生成的吗,我查看了半天,不知道这个验证码是怎么生成的,谢谢.
simapple
2017-08-31 08:29:22 +08:00
@McooLewis 验证码图片是后台生成的
Mrkon
2017-11-27 18:19:32 +08:00
解决问题主要在于表单中的 vl5x 参数与 guid 参数
其中通过 post guid 参数到 http://wenshu.court.gov.cn/ValiCode/GetCode 得到 number,在其出现 500 时
参数 number 为'number': 'wens'

对于 guid 参数可以通过:
import random
def guid():
return hex(int((random.random() + 1) * 0x10000))[3:]

对于 vl5x 参数可以通过:
链接: http://wenshu.court.gov.cn/List/List?最后的两个函数
var _fxxx = function (p, a, c, k, e, d).....
function getKey().....
其中 getKey()返回的就是 vl5x
运行 js 代码可以通过 python 的 PyV8 模块,附教程链接: http://blog.csdn.net/hanshileiai/article/details/51628173

但是:因为本人 js 不太会,其中 vl5x 参数是通过什么改变的,转化为 python 的代码是怎样的,希望大神能不吝赐教。
fox2moon
2017-12-08 10:24:14 +08:00
@Mrkon 你好 想知道你关于 vl5x 参数 你有解决办法吗?
我运行后 报错 ReferenceError: "getCookie" is not defined in <eval>#26:4<eval> at line number 1
p, a, c, k, e, d 是代表的什么?
期待你的回复
Mrkon
2017-12-08 14:31:12 +08:00
@fox2moon 不好意思,js 因为最近太忙没有看过,所有还是不太懂,但是你的错误我估计出现在要导入 cookie 参数,
而其中最值得的参数是 vjkl5=0ac4559fffd034030166188f40d6a9ae4c37436f;这样的,希望能帮到你。在找到解决办法后希望给我个回复,共勉。
zbl430
2017-12-08 17:08:51 +08:00
vjkl5 这个参数变换不建议使用 python 来写,非常多,就用 pyv8 吧


vjkl5=0ac4559fffd034030166188f40d6a9ae4c37436f
getKey 这个函数实际就是将 0ac4559fffd034030166188f40d6a9ae4c37436f ->> 1514b83137a527bcbfbf590d

只能说这么多了
Mrkon
2017-12-12 10:48:54 +08:00
@zbl430 谢谢,能否问一下,如果作为一个资深爬虫工程师,一般需要对 js 掌握到什么程度啊

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

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

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

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

© 2021 V2EX