网页音频地址问题
我想从这个网页中https://ting55.com/book/1367找到实际音频的下载地址,然后用程序模拟去批量下载。但我不知道怎么分析它的实际音频请求地址是怎么生成的,比如第30章,点击后mp3地址是这样的:
https://pp.ting55.com/202309262141/108918f53a9d60af087cd42fd3db5f46/2015/06/1367/30.mp3?v=1695733896621
108918f53a9d60af087cd42fd3db5f46这个串是怎么来的?怎么找到生成这个串的js并分析呢?
求哪位大神指引一下
思路:在主页面找class=f的元素的href,逐个打开,再找新页面的class=jp_audio_0的href,这样就可以批量下载了。具体实现我也不是太清楚!
仅提供个思路吧。或许那个就是数据库里的一个字段呢,根本没有生成的算法。 了解一下js逆向你就懂了。 链接:https://m.ting55.com/glink
data:
bookId=1367
isPay=0
page=30
post请求,page是章数
import requests
url = "https://ting55.com/nlinka"
payload='bookId=1367&isPay=0&page=1'
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6',
'Connection': 'keep-alive',
'Origin': 'https://ting55.com',
'Referer': 'https://ting55.com/book/1367-1',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
'l': '1',
'sec-ch-ua': '"Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'xt': 'c113374076ca79992527ec3b9b624018',
'Cookie': 'JSESSIONID=99C71D0989DC9A8A8EEA56DECB9C2542; ting55_history=https%3A%2F%2Fting55.com%2Fbook%2F1367-1%2560%25E4%25B8%2589%25E4%25BD%2593%25E6%259C%2589%25E5%25A3%25B0%25E5%25B0%258F%25E8%25AF%25B4%25E7%25AC%25AC1%25E7%25AB%25A0',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Host': 'ting55.com'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
bookId=1367 #书的id
isPay=0
page=30#页数 # 初次试探
在页面 `[三体有声小说(第2章)在线收听_恋听网 (ting55.com)](https://ting55.com/book/1367-2)` 抓包,只有几个文件,逐一点开看一看发现 `mp3` 下载链接来自这个请求。
然后我测试了一下,发现模拟这个 `nlinka` 的请求有些麻烦。
**因为经过几次测试之后即便请求成功不会返回音频链接了,网页上点击播放也没反应。**
不知道什么原因,可能是测试请求头的过程中触发了什么东西,把我 `ip` 暂时拉黑了??当我用手机访问该页面却能播放,我更加确定我的推测了……不过我也没有免费的 `https` 代{过}{滤}理,只好就地分析了。
**注意:以下分析没有进行测试,请理智看待!**
这是一个 `POST`,先关注它的提交的数据。
关于请求头的东西我只能给出猜测。
```python
# 我觉得可疑的东西下面会有提到,判断依据是在 HTTP 协议中没见过的、或者可能会变化的
# 水平有限,可能没有认全
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: en
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 26# 这个长度应该是根据 POST 的数据计算出来的
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 # 注意 POST 的数据的格式
# cookie 是要关注的
Cookie: JSESSIONID=88D6491EC24ADED44B4D9E7C3919D148; ting55_history=https%3A%2F%2Fting55.com%2Fbook%2F1367-2%2560%25E4%25B8%2589%25E4%25BD%2593%25E6%259C%2589%25E5%25A3%25B0%25E5%25B0%258F%25E8%25AF%25B4%25E7%25AC%25AC2%25E7%25AB%25A0
Host: ting55.com
Origin: https://ting55.com
Pragma: no-cache
# 它的规律也很好理解,就是书的链接加上破折号(-)再加上章节数
Referer: https://ting55.com/book/1367-2
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.40
X-Requested-With: XMLHttpRequest
l: 1 # 这个可疑
sec-ch-ua: "Microsoft Edge";v="117", "Not;A=Brand";v="8", "Chromium";v="117"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
xt: 2a56a0811cbc2a2bc0dfd611c19d4e76 # 这个可疑
```
## 分析参数 xt 和 l
根据经验,先直接复制 `xt` 的值在 `HTML` 源码中找!
至于 `l` 参数太短,只好查看 `js` 代码来确定,还好经过一番查看,进入下面指示的文件就可以看到对应的代码了。
这个 `l` 参数不就是在这里嘛。
## 确定 cookie 参数
搜索不到 `JSESSIONID`,猜测是服务器发过来的,以下证实了猜测。
至于那个 `cookie 中的 ting55_history` 键问题不大,我新开一个无痕浏览器测试时并没有出现它。
# 最后强调
我只做了分析,并没有实际测试,也没有编写代码,因为到发布文章为止我还不能播放小说音频!!! Arcticlyc 发表于 2023-9-26 23:19
链接:https://m.ting55.com/glink
data:
headers里面的xt每一个mp3都需要变,需要从网页源码里获取。
像下面这样的
<meta name="_c" content="c113374076ca79992527ec3b9b624018">
这网站应该有反爬,多请求几次就返回不了mp3地址了 来学习了 论坛里有一个坛友之前发过恋听网的下载器,你可以分析一下他那个是怎么运作的,那个软件现在已经失效了。仅作参考吧。
页:
[1]
2