如何找到下载文件的URL?

How can I find the URL that downloads a file?

我正在开发网络抓取工具,我需要从页面下载 .pdf 文件。我可以从 html 标签中获取文件名,但找不到下载该文件的完整 url(或请求正文)。

我尝试使用 chrome 和 firefox 网络流量工具以及 wireshark 嗅探流量,但没有成功。我可以看到它向与页面本身完全相同的 url 发出 post 请求,所以我不明白为什么会这样。我的猜测是文件名是在 POST 请求正文中发送的,但我也无法在这些工具中找到该信息。如果我能在正文中看到变量名,我就可以创建请求的副本,然后获取文件。

我怎样才能得到这些信息?

这是我正在谈论的网站:http://www2.trt8.jus.br/consultaprocesso/formulario/ProcessoConjulgado.aspx?sDsTelaOrigem=ListarProcessos.aspx&iNrInstancia=1&sFlTipo=T&iNrProcessoVaraUnica=126&iNrProcessoUnica=1267&iNrProcessoAnoUnica=2010&iNrRegiaoUnica=8&iNrJusticaUnica=5&iNrDigitoUnica=24&iNrProcesso=1267&iNrProcessoAno=2010&iNrProcesso2a=0&iNrProcessoAno2a=0

编辑:对于那些想做类似事情的人,请查看此网站:http://curl.trillworks.com/
它将 cURL 转换为 python 请求代码。很有用

请求使用的POST数据是由ASP.NET生成的编码内容。它包含 link 所在页面的各种 state/session 信息。这使得很难直接抓取 URL.

您可以通过从 Chrome DevTools 的“网络”选项卡导出 HAR 来检查它:

__EVENTVALIDATION 数据用于确保客户端引发的事件源自服务器页面上呈现的控件。

您可以通过先请求 link 所在的页面来实现您想要的效果,然后从响应中提取所需的 POST 数据(包含页面状态和嵌入式请求文件),然后使用此信息发出新请求。这假设服务器在此期间没有使任何会话过期。