微信安卓 X5 浏览器一个让人无语的设定 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hhacker
1.35D
V2EX    程序员

微信安卓 X5 浏览器一个让人无语的设定

  •  
  •   hhacker 2017-12-25 16:02:20 +08:00 9408 次点击
    这是一个创建于 2857 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 微信浏览器默认会代理你的所有页面访问,包括 ajax 操作
    • 现在遇到一个超级无语的表现,在页面里 ajax post 时,如果微信的默认代理走通了,那业务表现正常,但是如果它这个代理不知道因为什么失败了或者便秘了,会要等待 4s 左右开启直连,直连的话其实一切是正常的
    • 只有部分安卓机型(小米手机,MIUI )出现,时而走代理时而不走代理,不走代理的时候基本都逃不过那等的 4s
    • 代理地址是这样的 Remote Address:163.177.73.12:8080
    • 感觉事情变成了玄学,服务器在它阻塞的 4s 里并没有收到请求
    16 条回复    2019-11-13 20:09:07 +08:00
    hhacker
        1
    hhacker  
    OP
       2017-12-25 16:36:55 +08:00
    目前能够使用的解决方案是:要么用 get 要么上 https
    kslr
        2
    kslr  
       2017-12-25 17:02:19 +08:00
    代理从谁哪里?微信服务器?
    w88975
        3
    w88975  
       2017-12-25 17:05:12 +08:00
    感觉并不是走代理 而是微信的网页安全检查
    chairuosen
        4
    chairuosen  
       2017-12-25 17:10:15 +08:00
    卧槽这是个大新闻啊,微信在监听并拦截所有 http POST 请求?
    hhacker
        5
    hhacker  
    OP
       2017-12-25 17:14:07 +08:00
    可以肯定是微信的服务器,这个无需震惊吧,这个很多人已经确认过了啊
    hhacker
        6
    hhacker  
    OP
       2017-12-25 17:16:01 +08:00   1
    #1 微信内置浏览器 x5 内核 有哪些坑及解决方案? - 李智辉的回答 - 知乎
    https://www.zhihu.com/question/30465777/answer/81110021

    #2 聊聊微信内页面发 Ajax 请求会重复请求的问题
    https://blog.fishlee.net/2016/07/07/double-request-from-wechat-client-with-ajax/

    #3 X5 重发 http 请求是怎样的?
    https://x5.tencent.com/tbs/technical.html#/detail/web/1/30948b53-875d-4b46-b05b-1122dd55c900
    kslr
        7
    kslr  
       2017-12-25 18:02:05 +08:00
    @hhacker #6 可是 X5 的文档可从来没有这样说过啊,我们也在用 X5。
    Biwood
        8
    Biwood  
       2017-12-25 18:10:21 +08:00
    非常非常恶心,手机 QQ 内置浏览器会劫持链接跳转到腾讯自己的网址然后再跳转回去,这个劫持不是在初次打开网址的时候,而是每一次跳转都劫持,我真是对这家公司没有任何好感。
    run2
        9
    run2  
       2017-12-25 19:53:23 +08:00
    关键是如何判断来自 x5 垃圾请求,并回复给它 408(能解决么? 408 )
    huangtao728
        10
    huangtao728  
       2017-12-25 23:45:22 +08:00 via Android
    实测了真的有这个现象,我之前遇到的是微信会强制转码一个我自己的网站,不能通过申诉关闭,只能绑定成为公众号业务域名避免
    现象是在一个用户的正常访问后,会有一个来自深圳电信的 IP 伪装成一台 iPhone 模拟访问,并缓存转码,之后访问的用户通通呈现这个转码版本

    几个问题:
    1、原网站的流量来源直接被掐掉了
    2、微信的缓存多久刷新没有明确指示,导致了一旦被缓存,来自微信的用户可能看不到网站的最新版本
    3、转码不够聪明,可能精简重要内容
    huangtao728
        11
    huangtao728  
       2017-12-25 23:52:50 +08:00 via Android
    https://i.loli.net/2017/12/25/5a411d67f11b6.png

    这是我几周前发现这个问题时的笔记,
    我的解决方案是根据特征做检测,发现模拟访问就返回特供版网页(精简到剩主要内容),让微信缓存,页面内提示该版本可能不实时,引导用户浏览器打开

    当时同时也阉割了特供版页面里网站的某些功能,比如登录,编辑,目的是逼着用户不在微信内浏览,现在看来还是有点远见啊
    xmcp
        12
    xmcp  
       2017-12-26 00:01:38 +08:00
    去年研究过微信的转码,发现微信不会转码错误页面。所以在 nginx 里加一条规则,看到 nsukey 参数强行把状态码设成 403,响应正文不变,这样就不会转码了。
    AV1
        13
    AV1  
       2017-12-26 00:09:47 +08:00
    同被这种机制恶心到了
    hhacker
        14
    hhacker  
    OP
       2017-12-26 09:21:37 +08:00
    翻 x5 的 faq 找到了这个
    https://x5.tencent.com/tbs/technical.html#/detail/web/1/849c02ab-8165-4e55-8628-e3ba8d8cf30e
    复制一下是这样的
    无论访问什么网页,如果网页超过一定时间没有响应,x5 浏览器会自动重新发起请求?
    这里有两个问题
    1 )一个是代理的问题,即代理认定响应的超时时间是 6S,在 6S 内没有给代理响应,代理认为链接失败,转而让终端走直连了。
    2 )终端直连发起请求,如果长时间没有收到响应,会进行重视,最多重视三次。
    解决办法有两个。
    1 )服务器端做兼容,尽量在 6S 内响应。
    2 )加直连的白名单,即忽略代理这条线,但是直连如果等待的时间太长,过了终端的超时时间,终端还是会发起重试。
    所以服务端处理的时间尽量压缩一下。

    #那么现在的问题是,直连白名单是由 TBS 管理的,似乎在开发者论坛发帖有一定可能性加到直连白名单里?
    smallgoogle
        15
    smallgoogle  
       2019-11-13 20:08:50 +08:00
    @huangtao728 不知道您解决转码啦吗?
    smallgoogle
        16
    smallgoogle  
       2019-11-13 20:09:07 +08:00
    @xmcp 有效吗?好像没啥效果。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1241 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:21 PVG 01:21 LAX 10:21 JFK 13:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86