如何用iMacros获取Chrome下载弹窗触发后的最终下载链接
问题描述
我正在抓取一个包含表单的网页,提交表单(点击按钮)后会弹出下载对话框并开始下载。我需要获取Chrome下载标签页中显示的最终下载链接,但该链接不存在于网页源码中,无法使用iMacros的EXTRACT方法直接获取。
环境信息(FCI)
- iMacros for Chrome v10.1.1(免费版)
- Chrome 108
- Linux Manjaro系统
更新说明
- 我制作了一个示例演示场景,目标是获取文件链接
https://speed.hetzner.de/100MB.bin,可通过对应演示页面复现问题。 - 已补充完整环境信息。
可行解决方案
由于目标链接不在页面源码中,无法直接用EXTRACT提取,推荐以下几种方法:
1. 手动捕获(快速验证)
打开Chrome开发者工具(F12),切换到「网络」标签,勾选「保留日志」。运行iMacros脚本提交表单触发下载后,在网络请求列表里找到对应下载文件的请求,查看其「请求URL」就是目标链接。
2. 结合Chrome下载API自动化捕获
编写Tampermonkey脚本监听浏览器下载事件,触发下载时记录链接:
chrome.downloads.onCreated.addListener(function(downloadItem) { if (downloadItem.url) { console.log("捕获到下载链接:" + downloadItem.url); // 可将链接存储到本地或传递给iMacros } });
注意:需要在Chrome扩展管理中为脚本开启downloads权限,iMacros免费版若要调用该脚本,需通过JS命令注入。
3. 修改浏览器下载设置提取链接
在Chrome设置中关闭「自动下载文件」选项,提交表单后下载链接会在新标签页打开,此时用iMacros切换标签并提取URL:
TAG POS=1 TYPE=BUTTON ATTR=* CONTENT=EVENT:CLICK WAIT SECONDS=3 TAB T=2 SET !EXTRACT {{!URLCURRENT}} PROMPT {{!EXTRACT}}
该方法仅适用于下载链接通过新标签页打开的场景,若直接触发文件流下载则无效。
内容的提问来源于stack exchange,提问作者M Mehdizadeh
相关产品推荐
相关产品推荐

