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