折腾:
【未解决】用Charles抓取Android的app中的视频数据
期间,用Charles去抓取android中app的包,找到想要的数据的请求了,但是发现request的http的method是CONNECT,而不是之前熟悉的GET、POST等:
所以需要去搞清楚:
Charles中HTTP的Method是CONNECT是什么意思
难道是socket?websocket?
或许是:
说的TCP?
用:tcpdump 或 Wireshark
抽空好好看看:
charles http method connect
“在 HTTP 协议中,CONNECT 方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。
例如,CONNECT 可以用来访问采用了 SSL (HTTPS) 协议的站点。客户端要求代理服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。”
“Http CONNECT相当于客户端和服务器之间建立的一个隧道,而通过这个隧道的请求是加密的,所以CONNECT方式的请求使用抓包是抓不到的”
“如果不开启Enable SSL Proxying,那么Charles只是简单把所有SSL通信转发给server而不做任何处理,此时我们抓包会看到这个https请求,但是看不到请求的内容;另外这个请求会以CONNECT而非GET的形式出现,同时请求耗时还会异常的长(甚至有的请求会一直不结束),实际上这个请求早就返回了,知道这点就好,以免发生疑惑(Charles在每个请求的overview里还会有温馨提示)”
感觉是:内部是TLS加密的,无法破解。
【总结】
http 1.1定义了8种方法:
- CONNECT是其中之一
- 另外7种是:
- GET
- POST
- PUT
- DELETE
- 不常用:
- OPTIONS
- HEAD
- TRACE
CONNECT的作用是:
- HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器
- 并非所有的http隧道支持connect方法
- Http隧道分为两种
- 不使用CONNECT的隧道
- 使用CONNECT的隧道
总之:
- Http CONNECT相当于客户端和服务器之间建立的一个隧道
- 而通过这个隧道的请求是加密的
- 所以CONNECT方式的请求使用抓包是抓不到
但是有人又说,好像是:
Charles中,正确设置了Enable SSL Proxying后,即可:
CONNECT就变成GET等请求,就可以到解密后的数据了。
最终整理出完全的操作流程和注意事项,详见:
【整理】Mac中用Charles抓包iOS或Android手机app中包括https的数据