今日内容概要

  • 爬虫思路之破解知乎登录
  • 爬虫思路之破解红薯网小说
  • 爬取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&timestamp=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&timestamp=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一开始就需要保存 后续做激活

最新文章

  1. C#中图片与BASE64码互相转换
  2. OOP
  3. iptables 开启80端口
  4. 佳佳的魔法药水 (vijos 1285)
  5. JUC之Atomic系列12大类实例讲解和原理分解
  6. Ehcache(2.9.x) - Configuration Guide, Configuring Storage Tiers
  7. js判断屏幕分辨率的代码
  8. android系统架构图
  9. dispatchkeyevent的调用机制
  10. linux 目录说明
  11. python部落刷题宝学到的内置函数
  12. 批量设置AssetBundleName
  13. 谈Linux
  14. Struts2框架的基本使用
  15. 禁止将http请求强制转换为https请求
  16. Spark监控官方文档学习笔记
  17. 数据加密算法--详解DES加密算法原理与实现
  18. pm2 常用命令解析
  19. [ZJOI2016]旅行者
  20. maven war项目完整配置

热门文章

  1. python13day
  2. JVM诊断及工具笔记(2)使用arthas定位哪里执行了System#gc()
  3. Java 后台线程介绍
  4. SpringBoot 自定义配置
  5. Entity Framework Core的坑,Select后再对导航属性进行查询或Select前进行Skip/Take
  6. div 根据内容自适应内容
  7. nginx实现跨域访问并支持(GET, POST,PUT,DELETE, OPTIONS)
  8. Vue项目history模式下微信分享总结
  9. 在linux下的mysql导入存储过程出现语法错误,需要在文件里加DELIMITER //
  10. feiQ发送信息