吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4897|回复: 13
收起左侧

[求助] 【python】如何爬取XHR状态码302重定向后的location?

[复制链接]
Ishin 发表于 2021-11-8 15:43
本帖最后由 Ishin 于 2021-11-8 15:47 编辑

目的


本来我是想做一个每天自动推送提醒新番更新+新番视频地址的云函数。但是在研究动漫视频网站的时候,一直困于爬取重定向后的地址。

爬取网站

网站:https://www.agefans.vip/

以喜欢的 《迦希大人不会气馁~》 https://www.agefans.vip/play/20210205?playid=2_13 为例子

步骤一

抓包:

发现在网站抓包视频API的时候会被反调试,调试会一直自动断下,继续执行会返回主页。Source里面写着 debugger。

image-20211107113622972.png

解决方法

  1. 可以停用断点deactivate breakpoints
  2. 也可以,在代码行号位置右键,添加条件断点conditional breakpoint, 写入false即可。
  3. 又或者,右键代码行,选择Never pause here

步骤二

研究如何获得视频地址的API。

抓包获取直接可观看的视频地址,例如: https://kol-fans.fp.ps.netease.com/file/61803ebb96dee42611db2b10S4iP7uY403

image-20211107134715707.jpg

问题是:

如何获取任何番的视频地址。比如,本例中的61803ebb96dee42611db2b10S4iP7uY403 这段文件名是如何得到的?

步骤三

找获得视频文件名的算法API

研究发现,在加载网页过程中,还有另外一个API,用于获取视频的名称。如:https://play.agefans.vip:8443/_getplay2?kp=......

image-20211107014737076.png

然而,更大的问题来了:

这段更长的参数是哪里来的?

kp=ZupmAWoVoLSgMfuPPda%2BD%2FxZx11xUjAm4V%2F9Vau9ad1Xrxmvdw5zah1T0YQIXlhLYYbNvyb3IisWvLaAUV8g27R6Zdo9kx%2BYiAJOZrXDtH45SnA4ToISuu2H3a23CczQ4MsoSWO7xUypj6ViUfGXBe%2Ff338dSkTcQTIaAmSiz8P2d0AKU4UH3Q%3D%3D

我完全不知道kp参数是如何来的?

步骤四

跟着网页走它自身获取参数的流程。

image-20211107141744810.png

  1. 点击Initiator跟踪网站的发起源。
  2. 发现该API是由网页https://www.agefans.vip/_getplay?aid=20210205&playindex=2&epindex=13&r=0.45431278811630227发起。
  3. 在请求该网站的时候,该网站会自动重定向视频真正地址的url(即上图的location)给我们。

但是

  1. 在我使用python模拟操作过程中,明明应该是302status_code,却一直返回200
  2. 我已经设置了headerscookies
  3. 还有allow_redirects=False
  4. 然而response.headers 返回的字典里面也根本没有key为"location"的元素。
  5. response.history的历史也是为空的列表。

源代码如下:

import requests

headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36",
        "referer": "https://www.agefans.vip/play/20210327?playid=2_6",
        "cookie": "ck_volume=0.45; fa_c=1; Hm_lvt_7fdef555dc32f7d31fadd14999021b7b=1636294078,1636306288,1636309542,1636344668; Hm_lpvt_7fdef555dc32f7d31fadd14999021b7b=1636344998; t1=1636345118306; k1=2409811800; k2=267297131104384; t2=1636345058431; fa_t=1636345058458",
}

url = "https://www.agefans.vip/_getplay?aid=20210327&playindex=2&epindex=6&r=0.5524324470363888"

r = session.get(url,headers=headers,stream=True,allow_redirects=False)

print(r.status_code)
print(r.headers)

求助

  1. 重定向后网址,如https://play.agefans.vip:8443/_getplay2?kp=ZupmAWoVoLSgMfuPPda%2BD%2FxZx11xUjAm4V%2F9Vau9ad1Xrxmvdw5zah1T0YQIXlhLYYbNvyb3IisWvLaAUV8g27R6Zdo9kx%2BYiAJOZrXDtH45SnA4ToISuu2H3a23CczQ4MsoSWO7xUypj6ViUfGXBe%2Ff338dSkTcQTIaAmSiz8P2d0AKU4UH3Q%3D%3D 里面的kp参数是如何得到的?
  2. 为什么requiests访问本应该重定向302的XHR,却返回status_code 200
  3. 为什么会没有.headers["location"]。。
  4. 任何形式的帮助,我都感激不尽,因为我已经思考了整整两天,搜索了各种资料,还是不知道为何。谢谢各位。

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
李佑辰 + 2 + 1 已经处理,感谢您对吾爱破解论坛的支持!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

老茶馆 发表于 2021-11-8 16:43
你请求时的cookie已经过期了所以返回的时200,当然就不存在location了。
Prozacs 发表于 2021-11-8 16:52
头像被屏蔽
细水流长 发表于 2021-11-8 17:26
头像被屏蔽
细水流长 发表于 2021-11-8 17:39
提示: 作者被禁止或删除 内容自动屏蔽
我叫小月亮 发表于 2021-11-8 17:52
细水流长 发表于 2021-11-8 17:26
简单看了下…………
这个网站跳转到 https://web.age-spa.com:8443/#/play/20200121/2/2 去播放,然后 htt ...

秀啊大佬,api接口怎么搞出来的?
Liyouchen 发表于 2021-11-8 18:20
我叫小月亮 发表于 2021-11-8 17:52
秀啊大佬,api接口怎么搞出来的?

没看到人家抓取的嘛
李佑辰 发表于 2021-11-8 18:25
Liyouchen 发表于 2021-11-8 18:20
没看到人家抓取的嘛

秀的一批啊 哈哈哈哈哈
hxm5201314 发表于 2021-11-8 20:56
看大佬们探讨技术就是过瘾,贼牛皮的大佬们,留下没有技术的眼泪
 楼主| Ishin 发表于 2021-11-9 01:37
细水流长 发表于 2021-11-8 17:26
简单看了下…………
这个网站跳转到 https://web.age-spa.com:8443/#/play/20200121/2/2 去播放,然后 htt ...

你是如何知道跳转到https://web.age-spa.com:8443/#/play/20200121/2/2 的?我在Chrome里抓包,根本没有发现有这个网站的包?求赐教。谢谢!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表