Python3 模拟手机登录熊猫直播(panda.tv)
来源:互联网 发布:网络对人们的坏处 编辑:程序博客网 时间:2024/04/29 14:56
时效性
本文内容具有极强的时效性, 仅供娱乐
目标
模拟手机 app 登录熊猫直播
实现
分析
大致思路: 抓包, 分析请求(headers, datas…….), 模拟请求
实战
fiddler 抓 HTTPS 比较费劲, 我的安卓机需要手动安装 fiddler 提供的证书才能避免 ssl 错误, 这里只说两个需要注意的地方:
证书下载
当你的手机成功连接上电脑端 fiddler 代理时, 手机访问 http://ipv4.fiddler:8888/ 如图, 选择下载 fiddler 证书
证书类型选择(Android7)
我的机器系统版本是 Android7, 有一个小坑在证书类型选择, 一定要选第一个
VPN和应用
, 如图通过抓包发现关键请求有两个
GET /ajax_aeskeyGET /ajax_login
猜测登录经过了 aes 加密, 搜索 js 代码发现关键方法
function(t) {var n = $.Deferred();return o("ajax_aeskey", { "__guid": t.__guid}).then(function(r) { var i = r.data || ""; i = c.enc.Utf8.parse(i); var o = c.enc.Utf8.parse("995d1b5ebbac3761") , a = c.AES.encrypt(t.password, i, { "iv": o, "mode": c.mode.CBC, "padding": c.pad.ZeroPadding }).toString(); n.resolve(a)}).fail(function(t) { t.errmsg = s.commonError, n.reject(t)}),n.promise()}
发现关键字
enc.Utf8.parse
, 搜索后得知是crypto-js
库, 简单查看其各个参数含义
通过c.pad.ZeroPadding
得知是b'\0'
填充
通过c.mode.CBC
得知mode=AES.MODE_CBC
通过"iv": o
得知IV='995d1b5ebbac3761'
快速写出 python 实现def encrypt(text, key, iv='995d1b5ebbac3761'): cryptor = AES.new(key, mode=AES.MODE_CBC, IV=iv) text = text.encode("utf-8") add = 16 - (len(text) % 16) text = text + (b'\0' * add) ciphertext = cryptor.encrypt(text) return b64encode(ciphertext).decode()
-
解决了加密部分, 接下来的就是小把戏了
在最终登录的时候经过尝试, 需要加上pdft
和__plat
这两个参数
猜测是唯一设备标示, 用来验证是否在常用设备登录
源码
import reimport requestsfrom Crypto.Cipher import AESfrom base64 import b64encodeaccount = ''password = ''def encrypt(text, key, iv='995d1b5ebbac3761'): cryptor = AES.new(key, mode=AES.MODE_CBC, IV=iv) text = text.encode("utf-8") add = 16 - (len(text) % 16) text = text + (b'\0' * add) ciphertext = cryptor.encrypt(text) return b64encode(ciphertext).decode()# loginopener = requests.session()res = opener.get('https://u.panda.tv/ajax_aeskey').json()res = opener.get('https://u.panda.tv/ajax_login', params={ 'regionId': '86', 'account': account, 'password': encrypt(password, res['data']), 'pdft': '', '__plat': 'android'}).json()if res['errno'] != 0: print(res)# signres = opener.get('https://m.panda.tv/sign/index').texttoken = re.search(r'name="token"\s+value="(\w+)"', res)lottery_param = re.search(r'"key":\s*"(?P<app>[\w-]+)",\s*"date":\s*"(?P<validate>[\d-]+)"', res)res = opener.get('https://m.panda.tv/api/sign/apply_sign', params={ 'token': token.group(1)}).json()if res['errno'] != 0: print(res)res = opener.get('https://roll.panda.tv/ajax_roll_draw', params={ 'app': lottery_param.group('app'), 'validate': lottery_param.group('validate')}).json()if res['errno'] != 0: print(res)
总结
- 善用搜索引擎
- 再好的前端加密不如一个 HTTPS
refs
http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForAndroid
https://blog.zhengxianjun.com/2015/05/javascript-crypto-js/
http://blog.csdn.net/leak235/article/details/50466213
阅读全文
0 0
- Python3 模拟手机登录熊猫直播(panda.tv)
- 熊猫TV技术与直播技术相关
- python获取浏览器cookies登录熊猫tv
- 王思聪出任熊猫TV CEO,视频直播为何这么火?
- python3 [爬虫入门实战]爬取熊猫直播用户信息
- Python3爬虫登录模拟
- 抓取熊猫TV弹幕
- 手机游戏直播 : 悟空TV客户端设计与技术难点
- python3模拟登录知乎
- python3+selenium实现自动进熊猫直播间发弹幕的脚本
- Python抓取熊猫TV弹幕
- 熊猫卫士防病毒(panda ant 是什么
- kung fu panda(功夫熊猫)观后感
- HttpClient模拟登录手机版微博
- Python3.3.3 模拟浏览器登录知乎
- 智能电视TV开发---手机直播视频客户端与智能电视通信
- 熊猫TV 弹幕助手 (开源 、 Java)
- 谈谈熊猫TV前端面试的感受
- JSP默认模板的修改:设置编码为UTF-8以及导入JSTL等
- 清除SVN信息
- DSO学习(1):在Ubuntu_16.04_ROS_kinetic上测试DSO
- UISegmentedControl用法
- Oracle中三种循环(For、While、Loop)
- Python3 模拟手机登录熊猫直播(panda.tv)
- MD5加密
- opencv分类算法实例
- [LeetCode] 448. Find All Numbers Disappeared in an Array
- [译] 理解 LSTM 网络
- 关于队列(数组队列,链表队列,循环队列)
- 关于java中对象的定义
- Thinkphp设计到的降序排列
- Linux基本命令