浏览器如何允许wget不允许下载php文件? [MediaWiki安装]

时间:2018-09-28 15:27:01

标签: php curl wget mediawiki

在安装MediaWiki期间,我必须下载一个名为LocalSettings.php的文件。当我通过单击下载链接(恰好是http://localhost/mymediawiki/mw-config/index.php?localsettings=1)下载它时,它会下载一个php文件,但是当我通过“复制链接地址”并使用

进行下载时

$ wget URL -O output

它会下载一个html文件。

以下是index.php的内容:

以下是我从wget获得的内容:

看起来,基本上是提供下载链接的页面(即http://localhost/mymediawiki/mw-config/index.php?page=Complete)。

以下是我的一些研究:

但是我不明白如何单击“下载文件”链接来下载php文件。这让我想知道这是否是一种使用wgetcurl之类的bash命令下载php文件的方法。

请告诉我浏览器的工作方式,以及通过termianl进行操作的其他任何方式。

2 个答案:

答案 0 :(得分:3)

您的浏览器具有cookie,而wget却没有,它几乎可以肯定是受cookie保护的文件,只有那些具有正确(身份验证)cookie的文件才能访问该文件,而wget不能。在chrome中,打开开发者控制台,导航至“网络”标签,在chrome中下载文件,在“网络”标签中找到请求,右键单击该标签,然后按“复制为curl”,您将看到请求的外观带有 cookie,看起来会更像:

  

卷曲'https://stackoverflow.com/posts/validate-body'-H'cookie:prov = 5fad00f3-5ed3-bd3b-3a8a; _ga = GA1.2.20207544.1508821; sgt = id = e366-9d13-4df2-84de-2042; _gid = GA1.2.129666.1538138077; acct = t = Jyl74nJBTyCIYQq5mc2sf&s = StN3CVV2B5Opj051ywy7'-H'来源:https://stackoverflow.com'-H'接受编码:gzip,deflate,br'-H'接受语言:en-US,en; q = 0.9'- H'用户代理:Mozilla / 5.0(Windows NT 6.1; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 69.0.3497.100 Safari / 537.36'-H'内容类型:application / x-www-form -urlencoded; charset = UTF-8'-H'接受: / '-H'推荐人:https://stackoverflow.com/'-H'作者:stackoverflow.com'-H'x要求:XMLHttpRequest '--data $'body = your + browser + has + cookies%2C + wge&oldBody =&isQuestion = false'-已压缩

  • 如果您在bash中运行该命令,则可能可以从终端下载文件。

答案 1 :(得分:2)

正如您在相关问题中所看到的,至少在HTTP Server启用PHP扩展的情况下,您不能仅通过请求文件来下载PHP源代码。

但是,这绝不意味着在适当的情况下您不能下载PHP脚本。

您可以在服务器中拥有一个PHP脚本作为代理,以绕过PHP解析并向您发送服务器中任何PHP文件的源代码。它只需要设置一些标头,然后使用简单的readfile(filename)即可将其交给您。当然,通常是在确保您被授权后才能完成。

此外,链接的地址并不总是单击链接时实际访问的地址。它可能包含一个覆盖onclick的{​​{1}}操作,并且可以动态放置在该位置,因此即使您检查HTML源代码也不会知道它。

弄清楚链接的实际作用的一种简单方法是在Firefox或Chrome中按Ctrl + Shift + C,转到“网络”标签,然后单击链接以查看其实际访问的内容。

我敢打赌它不会像您想的那样直接访问文件。

相关问题