网站产品页面:https://www.cn-abs.com/product.html#/detail/document
背景:这个网站需要注册登录,其中PDF文件需要付费下载,但是我有付费下载账号,可以手动下载文件
我已经实现的需求:可以模拟登录,把这些文件名,文件下载的链接打印出来
遇到的问题:我拿一个获取的PDF链接,去session.post请求该数据,下载下来的文件时打不开的,报文件错误,只有1KB,所以数据没有下载下来;同时我在Chrome里面复制手动下来时候留下的链接,浏览器打不开该链接,报以下错误:download file error:passcode is error,has no auth download this file
详细情况:
当点击下载按钮是,浏览器会发送一个请求,返回一个JSON,里面有我们的PDF链接,这里是已经获取到的,但是怎么请求这个链接,都不能把PDF下载下来
可以改成用selenium。效率低很多就是。
效率太低,不考虑
直接请求pdf文件的链接,结果是什么?你这别人也没法测试,代码也不贴,也没法下载
结果说了,下载下来的PDF1KB,不能打开,PDF下载链接已经抓到了,代码很简单,就是个post请求,但是下载不下来。
@theDataDigger: 所以你的问题到现在还没解决
@会发光: 对的
@theDataDigger: 自己心里没点数么
@会发光:你看了我的问题就知道,即便把链接复制到浏览器上打开,是报没有权限打开的 ,但是通过点击产品可以下载文件,所以爬虫这块,浏览器都不能下载,模拟浏览器也就行不通了,我现在需要理解的是 服务器是怎么实现这一点的,一般来说,只要抓到了PDF链接,无论POST还是GET 都可以获取到数据
@会发光: 什么意思
@theDataDigger: 你的头部信息加的什么(session),复制到浏览器不能打开说明可能有referer限制,你是怕别人偷你代码还是怎么滴
@会发光: 我代码加了refer也没用
@theDataDigger: 你自己试吧,什么都看不到讨论个p,祖传代码
@会发光: 主要是账号不能给你,代码如果给你的话,你运行也没用,这是个收费网站
@theDataDigger: 贴代码,别人看到你哪里的设置是怎么样的,明白吗?空口说什么?
@会发光: 好吧,大概是这样的,我获取了session,然后用session.post(url)去请求下载
我试了一下,由于我的账号不能下载,点击的请求似乎也就是一个简单的post。如果你点击能下载下来,但是代码下载不下来。可能性无非是链接没找对,或者信息给错了。你可以先确认一下,你登录过session里面有没有这个cookie里面的所有信息。
另,你暴露了密码 test_2018。
是因为Cookie暴露了密码吗
我的密码并不是test_2018啊
Cookie: CNABS_PassCode=test_2018; cnabs=zzzzzzzzzzzzzzzzzzz
@theDataDigger: 恩?我的CNABS_PassCode和我的密码一样,我搞错了吗?
@Masako: 你真的吓死我了,密码泄露很恐怖了,这个账号公司几万钱买的
@theDataDigger: 这么贵啊。哈哈,冷静一点。我试了一下,请求没什么问题,主要就是根据这个Cookie来判断用户的,而且cookie好像没多久就过期了,你直接复制一下网页上的cookie放在headers里面,然后请求下载试试呢。
@Masako: 我把请求头的数据都搞上去了,也没用
@theDataDigger: 那就不清楚了。可以再仔细看看下载请求流程,祝好运~
应该是身份验证有问题,你先把下载下来的1kb内容打开看看是什么