如何用 Python 批量获取 onClick 弹窗的文件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sxq

如何用 Python 批量获取 onClick 弹窗的文件

  •  
  •   sxq Oct 25, 2020 via iPhone 3078 views
    This topic created in 2013 days ago, the information mentioned may be changed or developed.
    在用 python 爬取网站文档的过程中遇到了问题,目标文件没有链接,而是一个 onclick 弹窗,点击后出来一个另存对话框,需要输入文件名,然后点击保存完成下载。这个 onclick 调用的一个 js 函数,找不到 url 。网上查了一下可以通过 selenium 实现自动化操作,但是用这种方法要重复模拟登录,打开页面,处理弹窗,效率很低。我想用 python 批量获取这种文件,请问怎么实现?
    22 replies    2020-10-29 12:53:31 +08:00
    baba233
        1
    baba233  
       Oct 25, 2020 via Android
    selenium 第一次登录保存 cookie,下次请求带上 cookie 直接访问这样?
    sxq
        2
    sxq  
    OP
       Oct 25, 2020 via iPhone
    @baba233 这个方法我试过了,cookie 是 httponly 的,cookie 带不进去,无法免登录
    annielong
        3
    annielong  
       Oct 25, 2020
    如果是系统对话框的话是直接输出了文件流,还是研究 js 吧,
    sxq
        4
    sxq  
    OP
       Oct 25, 2020 via iPhone
    @annielong 是的,直接输出了文件,没有 url,但我对 js 不熟,研究不出来。你能否留个联系方式,我把页面和 js 打包发你,你帮我看看?
    imn1
        5
    imn1  
       Oct 25, 2020
    url 是一定有的,浏览器查 request
    sxq
        6
    sxq  
    OP
       Oct 25, 2020 via iPhone
    @imn1 真的没有 url,大哥,楼上那位兄弟说的对,是输出了文件流,弹窗另存。
    imn1
        7
    imn1  
       Oct 25, 2020
    @sxq #6
    不是没有,是你不知道怎么获取而已,http 协议不带 request ? server push 么?
    不一定是个 url (get),可能是个 post 或者 xhr,request 总是有的,看你能不能组合出来并模拟发送
    你需要能捕获 request 的工具
    sxq
        8
    sxq  
    OP
       Oct 25, 2020 via iPhone
    @imn1 谢谢解答,能不能留个联系方式,我把页面和 js 发你,帮我看一下。
    imn1
        9
    imn1  
       Oct 25, 2020
    @sxq #8
    现在已经比较少搞爬虫了,规避风险,只玩自己需要的东西,而且低频避免触发对方的防护机制
    另外,request 不是看 js 代码就能看出来的,主要手段是抓包
    sxq
        10
    sxq  
    OP
       Oct 25, 2020 via iPhone
    @imn1 我是用 Flidder 抓包的,但 request 里没有,到弹窗这一步就是 js 处理了,而且是调用 win 系统的对话框
    renmu123
        11
    renmu123  
       Oct 25, 2020 via Android
    你把网站发出来看看,有感兴趣可能顺手就解决了
    sxq
        12
    sxq  
    OP
       Oct 25, 2020 via iPhone
    @renmu123 在内网,我把页面和 js 打包发你,帮我看一下可以吗?
    fx0719
        13
    fx0719  
       Oct 26, 2020 via iPhone
    我也有个内部网站也是这样,然后看 js,自己网址拼接
    sxq
        14
    sxq  
    OP
       Oct 26, 2020 via iPhone
    sxq
        15
    sxq  
    OP
       Oct 26, 2020 via iPhone
    @fx0719 麻烦有空帮我看一下,链接在上面,不能重复发,谢谢
    lijialong1313
        16
    lijialong1313  
       Oct 26, 2020
    @imn1 我看了一眼他似乎是 OA 系统用 IEHelper 这类东西(是 ActiveX 来的吧)去下载的。
    sxq
        17
    sxq  
    OP
       Oct 26, 2020 via iPhone
    @lijialong1313 是的,这个文档应该怎么获取?
    no1xsyzy
        18
    no1xsyzy  
       Oct 26, 2020
    @sxq 假定 #16 是对的,那 ActiveX 是走编译的,别想从代码层面研究了
    Fiddler 可能没法设置代理,进程不在浏览器上,代理设置了走不走都另说。
    先 Wireshark 吧。
    sxq
        19
    sxq  
    OP
       Oct 26, 2020 via iPhone
    @no1xsyzy 好的,谢谢,我先去了解一下 wireshark
    jeeyong
        20
    jeeyong  
       Oct 27, 2020
    pyv8
    lijialong1313
        21
    lijialong1313  
       Oct 29, 2020
    @sxq 有一个很暴力的方法,听说过按键精灵吗?
    llsquaer
        22
    llsquaer  
       Oct 29, 2020
    如果不是效率优先的需求.....实在不行 使用 seleniumIDE 插件 火狐,谷歌都有..在当前使用的浏览器上录制动作....就不用考虑 cookies js 之类的了..因为本来就是你本机浏览器 ...
    About     Help     Advertise     Blog     API     FAQ     Solana     5603 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 06:31 PVG 14:31 LAX 23:31 JFK 02:31
    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