请教各位大大 如何在自己的程序中拦截safari 发出去的请求


#1

1 charls 这种抓包软件是如何获取到iphone上发出去的网络请求?已解决
2 如何在自己的程序中拦截safari 发出去的请求
不胜感激


#2

Charles 就是个 http 代理服务器


#3

感谢您的回复,不通过http代理服务器,我们自己如何拦截到iphone 发出去的网络请求?


#4

hook 系统级别的send&recv


#5

send 和 recv 对分析协议很不友好,还不如 tcpdump,更不要说无法处理 TLS 加密

做过 iOS 开发对 https://developer.apple.com/documentation/foundation/nsurlsession 应该不会陌生


#6

nsurlsession 并不能拦截到safari中发出去的请求


#7

UIWebView / WKWebView 请用 Tweak 全局开启任意 App 的 WebView 调试


#8

感谢您的回答,
我又认真的看了一遍,但是如果我想让自己的程序拦截到safari 发出去的请求 要自己实现webinspector?
还有其他的方式吗?


#9

safari应该是走的webkit, 你去拦截webkit就好了, 如果是越狱设备
com.apple.WebKit.*


#10

NSURLProtocol 解救你
可以在 + (NSURLRequest *) canonicalRequestForRequest:(NSURLRequest *)request 做你想做的事


#11

感谢,之前没有hook对进程


#12

感谢您的回复。我ios 正向懂的少
使用 NSURLProtocol 需要在app层 实现对吗?
不能直接hook 或者找到webkit 哪个类实现了NSURLProtocol 协议


#13

WekKit用NSURLProtocol会有很多麻烦, 不建议
我遇到过的就有body缺失, cookies缺失


#14

如果你对逆向和正向都不熟悉建议用楼上的办法。

Safari 开了网页调试之后每一次请求都会跟 webinspector 通信,在这上面做处理肯定是可行的,但是需要增加分析 webinspector 服务的工作量