用爬虫下载资源网站资源
爬虫
看到一个网站,规则是这样的。
充值会员,免费下载资源。
所以如何通过脚本快速下载所有资源, 并不是手动去点击下载。
# 分析
1. 用户是登陆之后才有权限的。 是不是可以通过Cookie, LocalStorage 获得登陆过的Token呢?
2. 通过账号密码手动登陆,抓包分析?
为了防止其他因素的影响。进入无痕模式。
通过登陆方式 获取信息。
登陆验证
# 正确输入
# 错误输入
{success: 0, msg: "用户不存在!"}
下载文件
获取资源ID
ID即2774.知道这个规律就行。点击下载,请求
# 请求
https://www.xiuzhanwang.com/plus/getmuban.php
# 请求头
:authority: www.xiuzhanwang.com
:method: POST
:path: /plus/getmuban.php
:scheme: https
accept: application/json, text/javascript, */*; q=0.01
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
content-length: 7
content-type: application/x-www-form-urlencoded; charset=UTF-8
cookie: PHPSESSID=h9dn17uq2hi4vr7b8unj6ev555; Hm_lvt_d3b36dbb05786259b188d50b1c64d2b8=1619618084; DedeUserID=3504; DedeUserID__ckMd5=ff8de111287c4604; DedeLoginTime=1619618687; DedeLoginTime__ckMd5=f678fc7917f612d6; Hm_lpvt_d3b36dbb05786259b188d50b1c64d2b8=1619618817
origin: https://www.xiuzhanwang.com
referer: https://www.xiuzhanwang.com/dedecms_mf/2774.html
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"
sec-ch-ua-mobile: ?0
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
x-requested-with: XMLHttpRequest
# 参数
id: 2774
获取具体的链接。 通过上一步获取uhash
# 请求
https://www.xiuzhanwang.com/plus/getmuban.php
# 参数
id: 2774
uhash: 5576facb4802ba11125198ac
open: 2
响应值是
链接和验证码都在HTML中。 解析出来就可以了。
编码
遇到的一些问题
网站默认是gbk编码的, 所以get请求的时候,需要转化。 还有post请求来的数据是unicode的,通过下面这个网站转码更容易看到返回的数据内容。
unicode转中文。