爬虫之爬取B站视频及破解知乎登录方法(进阶)
2024-08-28 23:07:02
今日内容概要
- 爬虫思路之破解知乎登录
- 爬虫思路之破解红薯网小说
- 爬取b站视频
- Xpath选择器
- MongoDB数据库
爬取b站视频
"""
爬取大的视频网站资源的时候,一般都需要下载一些第三方的功能模块来帮助我们爬取
b站、抖音...
开源:全世界公开 免费使用的
如何快速格式化json格式数据
https://www.bejson.com/
研究每个视频url的特点
https://www.bilibili.com/video/av73342471?p=1
https://www.bilibili.com/video/BV1nE411176d?p=2
https://www.bilibili.com/video/BV1nE411176d?p=3
https://www.bilibili.com/video/BV1nE411176d?p=4
"""
1.访问视频链接查看网页源码发现视频的详细信息就在js代码中
<script>window.__playinfo__ = {...}</script>
# 真正表达式
<script>window.__playinfo__ = (.*?)</script>
2.需要一个整合的工具
ffmpeg
爬虫思路之破解知乎登录
1.知乎是必须登录之后才能访问网站资源的
2.发送登录查找接口信息及请求体数据格式
Request URL: https://www.zhihu.com/api/v3/oauth/sign_in
3.请求体数据全部都是加密的
aR79k4U0cT2tXqYq8LPG6vHmxq2pkLnmtbSBDgg9kLtxgeSmhbfGiqX1jbfVoG398LF0gQN0cT2tuqYq8LkMQbwGivwOgUxGw9e0g4e8kCV92vgBzh3qk4R92LkYFhVGwqoVJbCGST2tECx9BLkBEJXmST2tXqYhZUS8eDC8FBtxg0Y080Y0kHU0r0txXqYhyhomogcMUuppkLPyMLtykQrqr7FXr8tyihYqk4R92LkYJwNm8CSMcrU0g72XUBN0B8F0Se9yb8xfnGFqY8tqciU82_tx6_xB1MY0NUe0gw2pk8t9BLfBkvwGUbOYDq3q8Ln8gcgZcUS_iD3ZpvS8Xg9hgqxOcvSMMTYhc4uyoMtxc_2q1RFqr6S0gRo9U9oMzcO1erU0g_xO-GoMBwxMXg9hguoLevwGXwNM3rU0gRtxguFqm0YBrAHqgg2f2Txy0qtq6A98S8Yfo8OBhq28Xg9hHgOGebOBtrS8
# 这里的请求体肯定是在前端用的js代码加密(前端的逻辑代码只能是js代码)
4.知乎验证码校验
https://www.zhihu.com/api/v3/oauth/captcha?lang=en
lang=en 验证码使用的是英文
lang=cn 验证码使用的是中文
第一次朝该地址发请求如果返回的结果{"show_captcha":true}那么就表示此次登录需要验证码校验
如果返回的结果{"show_captcha":false}那么此次登录无需验证码
5.一般涉及到js加密都会出现一个关键字encrypt
全局搜索js文件中含有关键字的js代码 一个个查找
直到找到return __g._encrypt()代码
给该行代码加断点查看加密之前的数据格式
6.利用解析库获取数据
from urllib.parse import unquote_plus,
"""
unquote_plus 将密文转明文
urlencoded 明文转密文
"""
msg = '''
client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=%2B8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https%3A%2F%2Fwww.zhihu.com%2Fsignin%3Fnext%3D%252F
'''
print(unquote_plus(msg))
client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=+8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https://www.zhihu.com/signin?next=%2F
7.分析解析之后的数据参数
client_id 用户id(固定值)
grant_type 验证方式(固定值)
timestamp 时间戳*1000,去尾
source (固定值)
signature 签名(js加密,变动)
username 用户名
password 密码
captcha 验证码
lang 验证码方式(固定值)
utm_source (固定值)
ref_source (固定值)other_https://www.zhihu.com/signin?next=%2F
8.加密数据里面还有一个加密项
signature(js动态加密)
全局搜索signature加密代码得出一下结论
import hmac
from hashlib import sha1
9.请求体加密代码执行
拷贝请求体加密的代码然后编写完整的破解代码
pip install PyExecJS # 执行js代码
10.登录的cookie一开始就需要保存 后续做激活
最新文章
- C#中图片与BASE64码互相转换
- OOP
- iptables 开启80端口
- 佳佳的魔法药水 (vijos 1285)
- JUC之Atomic系列12大类实例讲解和原理分解
- Ehcache(2.9.x) - Configuration Guide, Configuring Storage Tiers
- js判断屏幕分辨率的代码
- android系统架构图
- dispatchkeyevent的调用机制
- linux 目录说明
- python部落刷题宝学到的内置函数
- 批量设置AssetBundleName
- 谈Linux
- Struts2框架的基本使用
- 禁止将http请求强制转换为https请求
- Spark监控官方文档学习笔记
- 数据加密算法--详解DES加密算法原理与实现
- pm2 常用命令解析
- [ZJOI2016]旅行者
- maven war项目完整配置
热门文章
- python13day
- JVM诊断及工具笔记(2)使用arthas定位哪里执行了System#gc()
- Java 后台线程介绍
- SpringBoot 自定义配置
- Entity Framework Core的坑,Select后再对导航属性进行查询或Select前进行Skip/Take
- div 根据内容自适应内容
- nginx实现跨域访问并支持(GET, POST,PUT,DELETE, OPTIONS)
- Vue项目history模式下微信分享总结
- 在linux下的mysql导入存储过程出现语法错误,需要在文件里加DELIMITER //
- feiQ发送信息