请教一个有关网络编程和 NETGEAR 路由器的问题

2015-08-14 11:17:54 +08:00
 qgewfg

背景:最近公司开发了一个iOS App,由于某种原因这两天需要在家办公。
然而我发现在家里的WIFI网络(NETGEAR路由器)下App发出的所有HTTP请求都会超时,但是用原来旧的那个腾达的路由器就不会,在公司的WIFI网络和4G网络下也正常。我把HTTP请求的URL复制出来用手机浏览器打开也正常,用UIWebView在App里请求也是正常的。
App 底层是自己用C++实现的HTTP client,我唯一能想到的就是我新入的NETGEAR路由的设置有问题,是不是出于安全考虑给过滤掉了我们这种用TCP自己实现的HTTP请求。是我的路由设置有问题还是我们的HTTP请求不规范?期待各位大牛回复,帮我定位并解决问题。Thanks!

2880 次点击
所在节点    问与答
13 条回复
qgewfg
2015-08-14 12:05:57 +08:00
为什么这么多人在线却没人回复。。。55555
gamexg
2015-08-14 12:14:44 +08:00
表示只能抓包了,看看你发出去的请求和浏览器发出的有什么区别。

很有可能NETGEAR路由内置了透明代理,你的http请求不规范,被代理给砍掉了。
qgewfg
2015-08-14 12:20:32 +08:00
@gamexg 手机连上HTTP代理,App C++层通过Socket发出去的包抓不到,想通过Wireshark抓包,就需要实现手机通过电脑上网,可是我电脑没有RJ-45接口。。。没办法共享Wi-Fi给手机用。。。

另外,我可以通过路由器设置关掉透明代理吗?
gamexg
2015-08-14 13:36:33 +08:00
本地开个 dnsspeeder 之类的dns服务器、及 http 透明代理。
dnsspeeder 将域名解析到本机 ip ,但是本机绝对不要用dnsspeeder 解析域名,不然死循环了。

修改手机dns,然后本机抓包即可。
hcymk2
2015-08-14 13:45:04 +08:00
ios设备上应该可以安装tcpdump吧 -w x.cap, 用Wireshark打开就行。
qgewfg
2015-08-14 13:59:47 +08:00
@gamexg 好的,我试试,谢谢!
qgewfg
2015-08-14 14:00:08 +08:00
@hcymk2 iOS设备也可以安装tcpdump吗?我找找看
kukat
2015-08-14 14:48:08 +08:00
mac共享wifi,手机连这个wifi,wireshark想怎么抓就怎么抓
qgewfg
2015-08-14 15:31:44 +08:00
@kukat Mac本身就是通过Wi-Fi上网也可以用Wi-Fi共享吗?怎么共享?我试了MS不行。
rubyonrail
2015-08-14 17:32:38 +08:00
@qgewfg 不用建wifi 用Charles建一个HTTP proxy ,然后手机连那个proxy去访问就好了
qgewfg
2015-08-14 18:07:08 +08:00
@rubyonrail 手机连上HTTP代理,App C++层通过Socket发出去的包抓不到,没有走系统的HTTP代理。
xenme
2015-08-14 21:07:02 +08:00
直接 rvictl,iOS 原生支持,然后 OS X 上 tcpdump 直接抓包就好了
ETiV
2015-08-14 21:33:52 +08:00
前两天关注了的一个库, 应该是查看网络请求的
https://github.com/netguru/ResponseDetective

另, Mac 上 iPhone 模拟器能正常访问么?
如果症状同 iPhone 的话, 应该可以直接从电脑上抓包.

tcpdump 需要手机越狱才能跑.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/213152

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX