Python 如何实现 connect 隧道请求? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
changwenrui2310
V2EX    问与答

Python 如何实现 connect 隧道请求?

  •  
  •   changwenrui2310 2020-08-13 10:02:20 +08:00 2570 次点击
    这是一个创建于 1956 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在爬取一个网站的时候,fiddler 抓到的包是这样的;

    首先发送一个 connect 隧道请求,然后是 OPTIONS 请求和 get 请求,

    但超过一定时间段,隧道将会关闭

    我的理解是网站是在隧道传输数据的,且超时会关闭

    那我如何用 python 去实现这种方式的请求呢?

    12 条回复    2020-08-13 13:56:21 +08:00
    Delon
        1
    Delon  
       2020-08-13 10:19:37 +08:00
    https
    changwenrui2310
        2
    changwenrui2310  
    OP
       2020-08-13 10:23:05 +08:00
    @Delon 怎么请求呢,直接 get 报 502
    locoz
        3
    locoz  
       2020-08-13 10:48:58 +08:00 via Android
    先 CONNECT 再操作那是 HTTPS 吧…先 OPTIONS 再 GET 是部分前端框架的默认操作,一些可以忽略,一些需要同样做一遍 OPTIONS,看情况弄就好了。
    你如果直接 GET 报错就和它一样先 OPTIONS 一下,如果还不行,多半是你请求体里的其他参数有问题。
    xingyue
        4
    xingyue  
       2020-08-13 11:08:38 +08:00 via Android
    @locoz options 一般是因为跨域浏览器自动发送的吧,请求库一般没有默认发送 options 请求的吧
    locoz
        5
    locoz  
       2020-08-13 12:50:04 +08:00 via Android
    @xingyue #4 没细究过具体原理,但是我印象中是有些跨域有、有些跨域没有,而且应该跟浏览器没有关系。
    刚刚查了一下,这种情况叫预检请求,用来检测服务端是否支持跨域,所以有可能是部分前端框架会自动发送、部分不会?或者我见到的那些没有发的可能是被人为关闭了?
    xingyue
        6
    xingyue  
       2020-08-13 12:55:02 +08:00 via Android
    binux
        7
    binux  
       2020-08-13 13:01:52 +08:00 via Android
    我没见过除了代理能用 connect 请求的
    imn1
        8
    imn1  
       2020-08-13 13:06:59 +08:00
    你又不是写 socket,干嘛要考虑 connect ?
    一般的请求模块已经处理了 connect 了,你需要做的是尽量模拟出浏览器环境,让服务器那边“觉得”你是浏览器访问
    locoz
        9
    locoz  
       2020-08-13 13:48:57 +08:00
    @xingyue #6 学到了,谢谢~原来是属于“简单请求”的就不会触发自动 OPTIONS
    renmu123
        10
    renmu123  
       2020-08-13 13:53:50 +08:00 via Android
    options 没必要管,requests 可不用遵从浏览器规范
    locoz
        11
    locoz  
       2020-08-13 13:55:36 +08:00
    @locoz #3 补充一下,既然这个 OPTIONS 属于浏览器自动发送的请求,那么它就完全可以被用于反爬。比如用是否先发送 OPTIONS 再发送其他请求;比如通过 Access-Control-Max-Age 来判断是否没有按照要求来,在时间范围内多次发送了 OPTIONS 。能想到的骚操作还是挺多的。

    所以最好还是按照同样的方式先发送 OPTIONS 再发送其他请求,并且按服务器要求的来处理,最大程度避免被识别。
    locoz
        12
    locoz  
       2020-08-13 13:56:21 +08:00
    @renmu123 #10 还是要管一下的,既然是浏览器自动发送的东西,那么就完全可以被用于反爬
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2644 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 09:04 PVG 17:04 LAX 01:04 JFK 04:04
    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