技术上面出现的问题,当然还是要用技术来解决
百度作为国内唯一一家良心坏了的企业
我们当然是不能继续付费支持他的猖狂行为的
作为一名做了12年技术的逆向老手
简单给大家说下如何通过技术手段解决百度限制速度的问题
首先,下载速度慢,涉及就涉及到了网络协议方面的知识
网络协议是永恒的话题,数据流转的起点与终点,也是我们三板斧的开始。
然后我们需要制定一个hook方案
可以选择插入HttpLoggingInterceptor,此方法网上很多,最早是珍惜的xposed模块,后来进化的frida模块,增强抗混淆xposed模块。
此方案反制方法太多,本人更喜欢直接hook12java.net.SocketInputStream.read([BII)Ijava.net.SocketOutputStream.write([BII)V
缺点就是解析起来很麻烦。
### cronet:
性能优于okhttp,网上资料不多,大厂很多都用,例如字节,某手。
hook方案:
框架操作多数在native,java层没有像okhttp那样请求响应的读写点,如果java层hook建议分别hook,涉及类123java.net.HttpURLConnectionorg.json.JSONObjectjava.io.InputStreamReader
### HttpUrlConnection:
旧时代产物了,多老版本使用。
hook方案12com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream()com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream()
这个还有可能其他实现类。
统统HOOK,打印结果
样本使用的是okhttp,但内容没有什么线索,数据都做过加密处理。
这时使用第二板斧,因为内存中会存在读写操作,猜测会存在一个下载列表,那就内存漫游起来
HOOK 几个关键类1234java.io.InputStreamReaderjava.nio.DirectByteBufferjava.io.ByteArrayOutputStreamjava.io.OutputStream
结果在java.io.InputStreamReader(Ljava/io/InputStream;)V有意外惊喜:发现了m3u8文件!
编写插件
拿到了m3u8文件就好办了,
我们通过解密,然后写出来对应的插件就能实现我们的目的
具体代码如下:
有需要的小伙伴可以去自行研究
技术就是用来解决生活中遇到的各种各样的问题,如果你被问题烦恼,想要通过技术去解决掉问题,可以参考下图找我交流
sessiona = requests.Session()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0','authorization':'oauth c3cef7c66a1843f8b3a9e6a1e3160e20'}
k3_confidence = 0.71
'''
# 可视化数据会被保存在云端供浏览
# 纯属学习,并未看出"角度"范围扩大对图像识别的影响,大部分时候60s内能搞定,说明优图还是很强悍的,识别速度也非常快
'''
runtime_list_x = []
runtime_list_y = []
nn = range(1,11) # 愿意的话搞多线程,1百万次更有意思
# 成功尝试100次,形成2维数据以热力图的方式展示
for y in nn :
for x in nn :
runtime_list_x.append( bolting(-3,3,k3_confidence) )
print( "y: " + str(runtime_list_y) )
print( "x: " + str(runtime_list_x) )
runtime_list_y.append(runtime_list_x.copy())
runtime_list_x = []
print ("-"*30)
print( runtime_list_y )
print ("-"*30)
# pip install plotly 数据可视化
import plotly
import plotly.graph_objs as go
plotly.tools.set_credentials_file(username='username', api_key='username') # 设置账号,去官网注册
trace = go.Heatmap(z = runtime_list_y , x = [n for n in nn ] ,y =[n for n in nn ])
data=[trace]
plotly.plotly.plot(data, filename='weldon-time2-heatmap')
# 尝试后发现一个特点,基本都是1~2个倒置中文,这样我们可以借此提速
# 角度范围放大,仅当识别出倒置中文为1~2个时才提交验证否则放弃继续寻找
### chcp 65001 (win下改变cmd字符集)
### python c:\python34\image_recognition_zhihu.py