背景:最近公司开发了一个iOS App,由于某种原因这两天需要在家办公。
然而我发现在家里的WIFI网络(NETGEAR路由器)下App发出的所有HTTP请求都会超时,但是用原来旧的那个腾达的路由器就不会,在公司的WIFI网络和4G网络下也正常。我把HTTP请求的URL复制出来用手机浏览器打开也正常,用UIWebView在App里请求也是正常的。
App 底层是自己用C++实现的HTTP client,我唯一能想到的就是我新入的NETGEAR路由的设置有问题,是不是出于安全考虑给过滤掉了我们这种用TCP自己实现的HTTP请求。是我的路由设置有问题还是我们的HTTP请求不规范?期待各位大牛回复,帮我定位并解决问题。Thanks!
1
qgewfg OP 为什么这么多人在线却没人回复。。。55555
|
2
gamexg 2015-08-14 12:14:44 +08:00 1
表示只能抓包了,看看你发出去的请求和浏览器发出的有什么区别。
很有可能NETGEAR路由内置了透明代理,你的http请求不规范,被代理给砍掉了。 |
3
qgewfg OP @gamexg 手机连上HTTP代理,App C++层通过Socket发出去的包抓不到,想通过Wireshark抓包,就需要实现手机通过电脑上网,可是我电脑没有RJ-45接口。。。没办法共享Wi-Fi给手机用。。。
另外,我可以通过路由器设置关掉透明代理吗? |
4
gamexg 2015-08-14 13:36:33 +08:00
本地开个 dnsspeeder 之类的dns服务器、及 http 透明代理。
dnsspeeder 将域名解析到本机 ip ,但是本机绝对不要用dnsspeeder 解析域名,不然死循环了。 修改手机dns,然后本机抓包即可。 |
5
hcymk2 2015-08-14 13:45:04 +08:00 1
ios设备上应该可以安装tcpdump吧 -w x.cap, 用Wireshark打开就行。
|
8
kukat 2015-08-14 14:48:08 +08:00
mac共享wifi,手机连这个wifi,wireshark想怎么抓就怎么抓
|
10
rubyonrail 2015-08-14 17:32:38 +08:00
@qgewfg 不用建wifi 用Charles建一个HTTP proxy ,然后手机连那个proxy去访问就好了
|
11
qgewfg OP @rubyonrail 手机连上HTTP代理,App C++层通过Socket发出去的包抓不到,没有走系统的HTTP代理。
|
12
xenme 2015-08-14 21:07:02 +08:00
直接 rvictl,iOS 原生支持,然后 OS X 上 tcpdump 直接抓包就好了
|
13
ETiV 2015-08-14 21:33:52 +08:00
前两天关注了的一个库, 应该是查看网络请求的
https://github.com/netguru/ResponseDetective 另, Mac 上 iPhone 模拟器能正常访问么? 如果症状同 iPhone 的话, 应该可以直接从电脑上抓包. tcpdump 需要手机越狱才能跑. |