V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qgewfg
V2EX  ›  问与答

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

  •  
  •   qgewfg · 2015-08-14 11:17:54 +08:00 · 2889 次点击
    这是一个创建于 3423 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2015-08-14 21:33:52 +08:00
    qgewfg
        1
    qgewfg  
    OP
       2015-08-14 12:05:57 +08:00
    为什么这么多人在线却没人回复。。。55555
    gamexg
        2
    gamexg  
       2015-08-14 12:14:44 +08:00   ❤️ 1
    表示只能抓包了,看看你发出去的请求和浏览器发出的有什么区别。

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

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

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

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

    tcpdump 需要手机越狱才能跑.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2487 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:29 · PVG 23:29 · LAX 07:29 · JFK 10:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.