如何分析链接以找出实际链接


13

有时在下载某些内容时,我发现链接不是指向文件的直接链接。

例如,是下载PDF文件的链接:

http://ishare.down.sina.com.cn/15181391.PDF?ssig=2jEFaNQs7K&Expires=1312905600&KID=sina,ishare&IP=1312761745,68.50.222。

我想知道如何找出/破解文件的实际链接(即http://*.PDF)?

不显示直接链接的此类和类似技术的名称是什么?一些参考资料,例如Wikipedia,...?


1
修复了您的链接。单击edit以查看我的降价来源。
Joel Coehoorn

Answers:


3

是的,有时候

通常有两件事发生。您的链接不再起作用,因此在这种情况下我不确定实际情况,因此我将在另一个链接上进行总结。

HTTP重定向

这就是您在Bit.ly其他服务中看到的。然后,提供HTTP重定向响应。当您访问http://bit.ly/oH3410时,它将重定向到实际URL。有时,一个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将其混淆,甚至完全丢失。


11

可能不可能。这些站点可以在您到达文件之前,通过一百次重定向为您提供数据。

另外,可以使用javascript根据提供给服务器的URL给出链接。


谢谢!不显示直接链接的此类和类似技术的名称是什么?一些参考资料,例如Wikipedia,...?
蒂姆(Tim)

1
只是重定向。不知道其他任何技术。看到这里
soandos

当链接指向文件时(例如与常规页面相对),通常称为anti-leech
Synetech

7

该站点可以被编写脚本,并且当它获得某个命令(URL可以传递命令)时,它随后可能会返回PDF文件(或其他文件),而不进行重定向。这是服务器端的事情,取决于网站的编码方式。如果不实际从服务器请求该链接,就不太可能弄清楚如何获取文件。有时即使您知道直接URL,也可能无权访问直接链接。某些网站已编码,因此直接链接将不起作用。


1
这是对的。小型附加功能:当客户端访问这样的晦涩链接,而服务器希望告诉客户端这实际上是pdf文件,并且应将其另存为pdf文件时,服务器会通过Content-Type HTTP告诉客户端标头。
vtest

3

对于那些受到良好保护的网站,这几乎是“真实” URL,您必须提交服务器的完整URL来验证您的请求。之后,您可能会被定向到另一个URL,但通常是一次性URL。换句话说,这些文件下载网站将永远不会为您提供直接的链接。

在此特定的URL中,受数字签名保护的参数清楚地列出了下载程序的时间和IP限制。对于具有这种能力的网站,不太可能会泄漏直接链接。


3

这些重定向链接通常也与会话状态相关联。他们将根据您的会话登录名进行一些privs检查,然后再为您提供链接-无法访问资源=无法访问资源。它可用于提供对Web根目录之外的文件/资源​​的访问,并由应用程序流回到请求者,而不是通过直接URL进行访问。但前提是您的私人允许。

两者的一个例子在这里。 它将根据添加了附加URL参数的'mkoenig'字符串将您重定向到另一个URL。重定向是在服务器端编码中完成的,您不会(或者至少不应该)看到。如果您随后转到“网络文件”,则列出的文件只是老师公开的文件。她可能还有其他无法访问的文件,这些文件不会列出。关于服务器端编码的内容,这也将返回/不返回。

如果不对服务器进行黑客攻击或访问服务器端源代码,我认为您无法获得实际的链接,即使可以,也可能无济于事,除非您的会话特权告诉服务器允许您访问它。

格雷格


2

像上面一样,这是不可能的。我建议您启动虚拟机或获取Sandboxie副本以包含浏览器以获取此类链接。

编辑

不知道您使用的是哪个操作系统,在此我将给出一个一般性的答案。

VM是虚拟机的缩写。它基本上是在计算机内部运行的软件创建的计算机。虚拟机将具有自己的操作系统和浏览器。尽管它仍然使用您计算机的Internet和硬驱,但从操作系统的角度来看,它是一台独立的计算机。这样便像草稿纸一样方便。VM内部发生的任何事情都不会影响您的真实计算机。

我建议您为虚拟机购买Virtualbox,除非您使用Windows,否则我建议使用Virtual PC。

Sandboxie有点像VM,但是它只是隔离特定的应用程序。您可以告诉它运行浏览器的副本,并且浏览器执行的所有文件或操作实际上都将重定向到一个临时文件夹。因此,如果它尝试下载病毒,它将被重定向到与计算机其余部分隔离的临时文件夹。它不像VM那样健壮,但是它使用更少的CPU /内存,并且更快,更方便。

我会先尝试Sandboxie。这是一条较小的学习曲线。


1
谢谢!“启动虚拟机或获取Sandboxie副本以包含诸如此类链接的浏览器”是什么意思?一些参考资料解释了如何做这两件事?
蒂姆(Tim)

抱歉,我会扩大答案。
surfasb

谢谢!我的操作系统是Ubuntu。但是我不知道如何使用VM来识别直接链接?
蒂姆(Tim)

1
它并不能真正为您识别链接。但是它创建了一个安全的环境,可以帮助您识别链接。您必须先编译页面,才能识别重定向。
surfasb

1
我认为他的问题与安全无关。他只是在寻找一种获取直接文件链接的方法。
magnattic'8

2

这是从来没有能够找出实际的链接。

服务器使用一些WWW Rewrite(例如,针对apache服务器)来处理文件请求,因此,例如,您可能要转到page www.example.com/13-this-site-has-nice-page-name.html,但实际上,您可以通过参数访问某些php文件,例如:www.example.com/site_handler.php?UID=13

即使您访问pdf文件,服务器端本身也可能存在重定向。

对于使用处理程序进行文件下载,这可能会更复杂一些,例如,您可以转到仅一个下载处理程序的页面,例如:www.example.com?file_downloader.php?param1=7683&param2=jld8ijn, etc... 在这种情况下,您正在访问的脚本可能与一个标头一起发送(例如pdf文件),但实际上它是一个php文件。

总结:您永远不会知道服务器和脚本的配置方式,因此即使您似乎知道,也永远不会知道真实的地址。


1

当您向Web服务器发送请求(单击链接)时,服务器可以发送许多不同的响应。常见示例为404(找不到页面),403(禁止)或500(服务器错误)。可能最常见的响应代码是200(Ok),但是您永远不会看到它,因为它通常与您希望看到的页面一起出现。

这里还有另外两个代码:301和302。代码301和302是重定向代码,它们告诉您的浏览器您想要的响应已移动到另一个位置。它们之间的主要区别是浏览器缓存内容的方式。301代码表示“已永久移动”,下一次您尝试访问原始链接时,浏览器可能会记住该页面已移动并直接转到新位置。302的意思是“在其他地方找到”,并将提供一个链接,您的浏览器应仅临时使用该链接。

只要您不断得到30倍的响应,就可以编写一个程序来检查链接,并且直到响应最终达到200为止。此时,与其下载内容,不如向您显示链接。

不幸的是,它还比这复杂。HTML页面还可以使用页面头部的meta标签重定向到新位置,该meta标签如下所示: <meta http-equiv="refresh" content="0;url=NEW PAGE URL" />。因此,这样的程序已经必须完全解析html,以确保我们到达最后一个重定向。

此外,页面可能会使用javascript进一步重定向您,并且javascript可能会被混淆。因此,现在我们的假设程序也必须了解javascript。至此,我们已经具有功能齐全的Web浏览器。我们缺少将页面实际呈现到屏幕上的一小部分细节,但是我们的程序几乎具有完整Web浏览器所需的所有其他功能,包括所有附带的安全性问题。如果您刚开始通常单击链接,您的状况将再好不过。


1

假设使用Windows:安装Fiddler Web调试代理,启用它。然后导航到您的起始URL,并在Fiddler的左窗格中查看所有重定向。在右侧窗格中,更改选项卡以显示“请求标头”和“响应标头”。我已经成功地将它用于该目的。

另一方面,如果直接浏览到“最终” URL,则单独的“最终” URL可能无法以相同的方式工作,因为该请求可能没有正确的引荐来源网址或错过了其他一些限制。

但是您甚至可以在Fiddler中发送带有自定义标头的自定义请求。参见标签“请求生成器”。


0

这在很大程度上取决于站点。

为此,您必须单独研究每个站点,并且每个站点都有单独的机制(或代码)以返回直接URI。

您还可以研究一些提供类似功能的开源浏览器加载项。



0

如果您使用的是Firefox,则可以使用一个名为的插件RequestPolicy,除其他事项外,该插件会暂停,并在您重定向到其他域时要求您许可。如果您想找到一个不会转到其他域的重定向,它将无法正常工作,但是我敢肯定,还有一个我不知道的其他Firefox插件=)

https://www.requestpolicy.com/

请注意,由于默认情况下它将阻止所有跨域图像,脚本,css和重定向,因此它将破坏许多使用CDN(内容分发网络)的网站。因此,如果您始终想知道重定向的去向,则不是最明智的选择,除非您准备每次访问一个新网站时都必须执行一些额外的步骤。


0

我不太确定,但是如果您使用的是CUrl,是否可以仅获取URL内容(PHP中的get_file_contents(url))然后检查MIME类型?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.