想用python写一个yunfile的下载器.. 或者叫爬虫?
思路挺简单的.. 下载链接分析转页目前到了验证码的一部分..
已经把验证码下载下来了..
chrome f12里面就什么都没有了..
就是输入完验证码之后点击进入下载.. 然后什么都没有!!!30秒过了还是什么都没有!!
完全不知道下一步该怎么办了...
代码如下
1
wudaown OP |
2
em70 2015-06-27 21:56:08 +08:00 via Android
说明验证码错误了吧,人家系统知道你在破解,不给你返回任何错误信息
|
3
wudaown OP @em70 不科学.. 我用浏览器正常操作没有然后在develop tools里面有看到任何返回.. 你没明白我的意思么.........
|
4
crab 2015-06-27 22:41:12 +08:00
时间到这个js redirectDownPage() 控制跳转的
|
6
crab 2015-06-27 23:39:21 +08:00
@wudaown 我不懂 Python 。
刚才试了下流程,就是先请求下文件下载页面,获取 fileid,再请求 验证码。 输入验证码后,延迟30秒,再请求文件调整页面链接。这个链接要自己构造 比如你代码提供的就是这个: http://p1.yunfile.com/file/down/wushangzhikong/3a40b126/0105.html 3a40b126 是 fileid 0105 是验证码 请求过去后返回的数据匹配下:form.setAttribute("action",saveCdnUrl+"这边就是文件下载真实地址"); |
7
crab 2015-06-27 23:43:15 +08:00
上面那个匹配是保存的。下载文件是一个 POST。
<form style="width:1060px;" class="tform" id="d_down_from module:fileService action:downfile userId:wushangzhikong fileId:3a40b126 vid:86d11777 vid1:a11ded7c93db2928 md5:b28f5d1212a83443229f8df8993bee34 |
12
crab 2015-06-27 23:54:05 +08:00
@wudaown 不是在js啊。如果你 fileid 和 验证码 都对,30秒后请求这2参数构成的 URL,页面得到的数据就包含上面那些参数了啊。
|
14
crab 2015-06-27 23:56:59 +08:00
@wudaown 我测试是 get 一次下载页面先,再get 一次验证码,get 一次 file&验证码.html ,最后 post 下载。
|
16
crab 2015-06-28 00:06:56 +08:00
@wudaown 延迟30秒后,访问 get 一次 file&验证码.html,这个页面里面的源码,有个 POST 就是下载那个按钮的。你直接 POST 这边,参数也这个页面提取。
|
18
crab 2015-06-28 00:15:24 +08:00
@wudaown
javascript:{ck();document.getElementById('hidebtn').click();} 搜索:hidebtn http://img-storage.qiniudn.com/15-6-28/76058268.jpg |
20
berry10086 2015-06-28 00:30:29 +08:00 via Android
我只想说,为什么不用requests
|
21
wudaown OP @berry10086 能说一下思路么..
|
22
wudaown OP @crab 看了半天 你提到的内容都找到了.. 不过还是没有办法从验证码跳转到下载页面.. 还是没有办法提交验证码.. 你最后提到的那个按钮是在跳转后的页面.. 跳转的过程还是没有找到..
|
23
Axurez 2015-06-28 03:39:24 +08:00
gist 为什么不加后缀名。。
|
25
imn1 2015-06-28 11:03:45 +08:00
我怎么感觉你只是调试程序,没有抓包?
|
26
p1n3 2015-06-28 11:43:37 +08:00
楼主,一楼的button是怎么出来的呢?
|
28
wudaown OP @imn1 在代码后面加个 a = opener() ; a.userAgent() ;a.imageHeader(); a.captchaOpener() 就看到结果了
|
31
crab 2015-06-28 14:53:52 +08:00
@wudaown
1:Winhttp GET “http://p1.yunfile.com/fs/3wusahan4gzh0ikobng1268/" 取出 fileid 2:Winhttp GET “http://p1.yunfile.com/verifyimg/getPcv.html” 输入验证码 延迟30秒 3:Winhttp GET “http://p1.yunfile.com/file/down/wushangzhikong/fileid/验证码.html” 取出 form 4: Winhttp POST “http://dl212.yunfile.com/view?fid="+上面 form 地址 参数也是 form |
32
erichuang1994 2015-06-28 14:56:50 +08:00
妹子为什么搞那两个站(K站 等)爬虫?
|
34
cc7756789 2015-06-28 15:20:09 +08:00 1
你的类构造的很有问题,导致完全没法分析,有些属性应该放进__init__
怀疑是你的代码把网页进行了刷新,导致你获取的验证码和当前网页不一致,而且你该贴出来你是怎么调用类的, 如果你不会使用类的话那么老老实实用函数的好,这是我登陆豆瓣的例子,也有验证码,https://github.com/ZhangHang-z/dung_beetle/blob/master/login_douban1.py |
36
wudaown OP @cc7756789 就是不熟悉才要联系学习吧.. __init__ 考虑过.. 现在不准备放.. 想先完整工作最后全部修改
|
38
wudaown OP @crab 就是说Winhttp GET “http://p1.yunfile.com/verifyimg/getPcv.html” 这一步就相当于输入验证码 只要等待30秒?然后直接到Winhttp GET “http://p1.yunfile.com/file/down/wushangzhikong/fileid/验证码.html”?
|
43
endoffight 2015-06-28 16:26:53 +08:00 via Android
楼主下完片记得和我们v友分享啊
|
44
wudaown OP @endoffight 我感觉要放弃了... 这我都搞不定..
|
45
endoffight 2015-06-28 17:51:34 +08:00 via Android
@wudaown 给我描述一下你的进度和问题
|
46
RitzoneX 2015-06-28 18:21:19 +08:00
之前写过程序来刷下载流量,感觉yunfile很坑人,扣流量严重,对IP有限制
有时验证码输入正确,却跳回第一页,让你继续输验证码。。 |
47
wudaown OP @endoffight 感谢.. 想实现通过脚本读取预先保存的链接下载文件..
目前进度.. 读取链接之后取得验证码,没有找到途径提交验证码.. 我贴出来的代码实现了读物和下载验证码.. 查看header发现验证码应该是对应其中一个referer header的 |
49
crab 2015-06-28 19:06:16 +08:00
@wudaown 这个验证码不用提交的。验证码的作用只是给后面那个链接组合的。
302 跳转回去,要么是 Cookies ,要么是 referer 出问题了,我不清楚你这边用 Python 对 Cookies 是怎么处理的。昨天我测试直接没访问第一个请求的主页,直接请求验证码,指定 fileid,也是被302。 |
50
wudaown OP @crab 不访问第一个页面直接请求验证码我也试过 确实可以通过.. cookie和referer我抄录了昨天用fiddle抓取的.. 今天直接用了还是被302了.. 嘛 如果确定是cookie和referer的话 起码我清楚往哪个方向继续了..
|
51
crab 2015-06-28 19:24:20 +08:00
@wudaown def imageHeader 这个里面你是不是指定了 cookies?你别指定 cookies,就第一次访问页面,返回 cookies 保存起来,第2次继续用。
|
55
wudaown OP @crab 结果好一点.. cookie和referer都抓取了重新用.. 30秒过后有多发送一个jsessionid不知道从哪里来的.. 图上面第一条是请求返回一个jsessionid然后在第二和第三条都重新用了.. 第四条就突然多了一个jsessionid .. 貌似是JS?
|
56
RitzoneX 2015-06-28 22:40:44 +08:00 1
https://gist.github.com/RitzoneX/c8598c570b2c00b8eecb
用python2,验证码我用了pytesseract处理 |
57
spy8888 2015-06-28 22:44:19 +08:00 via iPhone
学习一下思路
|
58
wudaown OP @RitzoneX 感谢 我下周回去看看代码.. 你提到的验证码处理也是我想到的 .. 能问一下是不是有一份要分析js的吗?
|
59
endoffight 2015-06-29 07:46:47 +08:00 via Android
@wudaown 不需要js,验证码对了就行
|
60
endoffight 2015-06-29 09:11:54 +08:00
|
61
binux 2015-06-29 10:59:53 +08:00
你并没有吧 cookiejar 保存下来,即你并没有在获取验证码的时候更新 cookie。
如果你稍微看一下验证码是怎么实现的,你就会爬了。 |