共计 2045 个字符,预计需要花费 6 分钟才能阅读完成。
根据 32 楼 mjj 提醒, 使用 http.cliens 是可以正常获取页面的, 但是使用 requests 就不行了, 用的同一套 proxies 和 headers….,有大佬一起研究下是什么原因吗?我就想用 requests 来爬 ————————————————————————————————- 最近想冲刺一下考研, 所以就上去 P 站看考研的视频 (咳咳咳) 地址: cn.po 删 rnhub.com/view_video.php?viewkey=ph620dd32bd1ec4 p 站程序员把 mp4 完整视频的链接放在了 html 页面里并赋值为 media_4, 只要把这个值提取出来就可以拿到视频完整直链 (非 m3u8 切片), 但是现在请求下的页面有问题, 找不到这个值, 这个值不是由 JS 生成的, 是直接放在 html 页面的 正常的返回网页结果应该有 media_4 这个关键词的 ————————————————————————————————- 我用 python 请求返回来的是张这样的, html 页面开头有好几行注释, 正常的不应该会有这么多注释 |
网友回复:
注册 : 换个姿势,用 selenium 或者 puppeteer
深海空间 : 2 楼正解,稍微有点反爬的 re 处理都比较麻烦
hous135: 大概率是 js 加载的数据 直接上 selenium
Unique: selenium 多慢啊, 要是 js 渲染的就去解这个 js
dragonfsky: js 逆向
Mr.lin: 虽然 我不会 但是你这个提问方式我就很喜欢
CapitalTeemo: 这个是大佬,我梦想着自己的 JS 能到这个水平
榆榆不可及 : 感觉不是通过 JS 加载页面的, 我在 chrome 上右键查看源代码时是可以看到哪些内容, 通过 xhr 加载的话源代码看不到的
Tankie: 不是 JS 渲染的, 关键信息都放在这个路径的 html 页面里
注册 : 现在最流行的姿势是用 golang 的 chromedp 库实现~
注册 : 就学了 python, go 没接触过 …
sharp097: 楼上说的正解,你能看到是一致的只不过是已经 JS 处理过了
深海空间 : pm 网页 我也瞅瞅
遥远彼方 : 大佬 这玩意可以过 cf 的机器人识别吗 selenium 会自己暴露特征 搞半天都过不了 cf
dragonfsky: 我是在 chrome 里通过右键, 查看网页源代码的, 这种情况下, JS 应该还没生效吧
dragonfsky: 如果你右键查看网站源代码没有上述关键词,那就换个姿势,或者考虑手机模式下,说不定有惊喜
深海空间 : 用 selenium 或 puppeteer 爬起来是不是比以前直接抓页面慢很多?
Chiser: 这啥技术?怎么解 js?还不是需要 webkit 去渲染 dom 啊?最后和 puppteer 不是一样吗?
jinwyp: 这个比 Puppeteer 快多少?但这个还是和 Puppeteer 一样啊 Puppeteer 可是官方的啊
注册 : 右键查看源代码有这个关键字,用 python 请求的话就找不到,ua 和 cookie 都改了还是一样,不太清楚他是怎么把 python 和浏览器区分出来的,也没被 cf 拦住
注册 : 应该没区分啊,我用 postman 直接 get 都有
深海空间 : 我用 python 的话
badyun: 真考研不会去扒视频的,看书才是王道。
深海空间 : 是 js 计算的,需要把动态生成的那段 js 运行一下,就能得到 m3u8 地址
委员 : 不是, 你打开我帖子里的链接, 再打开 chrome 调试工具, 刷新页面, 然后在 console 里打印 media_4 这个值, 这个是写死在 html 页面的一个 mp4 格式的直链 (非 m3u8 切片)
红 A : 用 python 试了下. 抓回来的 源码有 media_4 你确认下 get 发出的 http 头吧
深海空间 : postman 直接调都有,肯定不是 js 算的
teardrops: 见鬼了, 就两行代码, 不应该会出错的啊
wjj: 请求头问题吧……
注册 : 对着浏览器加了 headers 也一样
注册 : 我用 py 试了一遍,没问题啊
深海空间 : 确实有点坑, 他的开发者和他的网站一样骚 但是这里存在一些小技巧, 甚至 headers 都是多余的, 它的检测点不在这里
badyun: 确实, 用你的方法使用 http.client 可以获取到正常的页面, 但是用 requests 库就不正常了, 你用 requests 也测试一下
Mr.lin: 老哥说一下, 问题出在哪里? 我已经想不到了, 用 http.client 是正常获取的, 但是用 requests 就不行了
深海空间 : 学习了,明天晚上我也去试试,还有你用得那个软件是什么 写代码的软件,用记事本写太累了
深海空间 : 我用的 sublimetext, 我就图个启动快速, 如果正常开发的话, 建议用 vscode
deyu: playwright 好像是 selenium 的升级版