Hello,这里是双面酱喵~今天我们来讲从零开始的逆向生活第三弹,这次我们来讲数据链路分析

当我们了解了传输协议和鉴权之后,需要分析数据源的链路,然后使用编程语言(文章使用 Python)来还原链路。

这里我们使用豆瓣 Top250 的数据进行分析。

案例 link:https://movie.douban.com/top250

一、抓包分析

我们使用浏览器自带的抓包工具打开(F12),然后刷新一下网页,来截取数据包。

发现数据源来自于 https://movie.douban.com/top250,查看 header 和 uri 中没有包含参数,可能是为空的默认值,尝试翻页,找到参数。

第二页:https://movie.douban.com/top250?start=25&filter=

第三页:https://movie.douban.com/top250?start=50&filter=

请求头部并没有发现任何变化,那么数据链路就是这样的。

二、链路总结

请求 url 为:https://movie.douban.com

参数存在于 uri 中,键对值参数:

  • start = (n-1)*25

  • filter 为空即可

然后返回带有数据的 w3c,渲染到我们的浏览器。

三、Python 还原链路

环境依赖:

pip install requests parsel

抓取全部影视名称并打印:

import requests
from parsel import Selector

BASE_URL = "https://movie.douban.com/top250"
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

for page in range(1, 11):
    start = (page - 1) * 25
    resp = requests.get(f"{BASE_URL}?start={start}&filter=", headers=HEADERS)
    sel = Selector(resp.text)
    for name in sel.xpath('//div[@class="item"]//span[@class="title"]/text()').getall():
        if not name.startswith("/"):
            print(name)