有时下载某些内容时,我发现链接不是文件的直接链接。
例如,这这是下载 PDF 文件的链接:
我想知道如何找出/破解该文件的实际链接(即 http://*.PDF)?
此类以及类似的不显示直接链接的技术叫什么名字?参考资料,例如 Wikipedia,...?
答案1
是的,有时。
有两种情况很常见。您的链接不再有效,因此我不确定这种情况的实际情况,所以我将在另一个链接上进行总结。
HTTP 重定向
这是您在使用Bit.ly
和其他服务时看到的内容。接下来要做的是提供 HTTP 重定向响应。当您访问http://bit.ly/oH3410它会重定向到实际的 URL。有时一个 URL 会重定向到另一个。如果你将 URL 插入http://web-sniffer.net/或者通过使用,[curl][1] -I http://bit.ly/oH3410
您将看到返回指向新位置的 301。
因此,要处理 HTTP 重定向,您只需循环 HTTP HEAD 请求,直到您在 300 秒内停止获取响应(希望获得 200)。请记住,它们可能会循环重定向,永远不会结束。您可以使用 CURL 或任何 HTTP 工具执行此操作。
下载器页面
大多数下载网站都使用这种方法。你点击下载链接,它会带你进入一个有很多广告的页面,并显示“你的下载将很快开始”之类的信息。[例子]。使用这些,您可以尝试从 URL 解析实际的直接链接,但这将是特定于站点的,并且大多数站点不会包含它以防止您绕过它。这可以通过meta http-equiv="refresh"
标头中的标签或 JavaScript(最常见)来完成。不过,JS 通常有一个标头回退。
不过,有一个解决方案。如果你查看下载页面上的源代码,你通常会看到一个<meta http-equiv="refresh">
标签(通常在<noscript>
标签中),其中有一个URL
指向实际下载的属性。因此,使用 CURL(或任何其他 HTTP 工具)下载页面,解析它,并获取该值。但如果网站真的想搞砸,他们可能会排除这一点,从而要求你使用 JavaScript 来下载文件。
可能还有一个 JavaScript 块链接到下载。它可能被混淆了,或者从另一个 URL 链接过来。尝试解析它时,您的进度可能会有所不同。页面上可能还有一个“直接链接”。您可以尝试一些技术来找到它,但同样,它可能通过 JavaScript 被混淆了,甚至完全丢失了。
答案2
这也许是不可能的。网站可能会给你带来上百次重定向,然后你才能找到文件。
此外,可以使用 javascript 根据提供给服务器的 URL 提供链接。
答案3
该网站可能已编写脚本,当它收到某个命令(URL 可以传递命令)时,它可能会返回 PDF 文件(或其他文件),而无需重定向。这是一个服务器端的事情,取决于网站的编码方式。如果不实际从服务器请求该链接,您不太可能弄清楚如何获取该文件。有时,即使您知道直接 URL,您也可能没有权限访问该直接链接。有些网站经过编码,因此直接链接不起作用。
答案4
这些重定向链接通常也与会话状态相关联。它们会根据您的会话登录信息进行一些权限检查,然后再向您提供链接 - 无权访问资源 = 无权访问资源的链接。它可用于提供对 Web 根目录之外的文件/资源的访问权限,并由应用程序流回请求者,而不是通过直接 URL 提供。但前提是您的权限允许这样做。
两者的一个例子是这里。 它会根据添加额外 URL 参数的“mkoenig”字符串将您重定向到另一个 URL。重定向是在服务器端编码中完成的,您无法(或至少不应该)看到。如果您随后转到“Web 文件”,则列出的文件只是老师已公开的文件。她可能还有其他您无法访问的文件,这些文件不会列出。这也由服务器端编码处理,与它将返回/不返回的内容有关。
如果不入侵服务器或者无法访问服务器端源代码,我相信您无法获得实际的链接,而且即使可以获得,除非您的会话权限告诉服务器允许您访问它,否则它可能也无济于事。
格雷格