Как браузер позволяет скачивать php файл, а wget - нет?[Установка MediaWiki] - PullRequest
0 голосов
/ 28 сентября 2018

Во время установки 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.Это заставляет меня задуматься, должен ли быть способ загрузки php-файла с помощью некоторых команд bash, таких как wget или curl.

Пожалуйста, скажите мне, как это делает браузер, и любым другим способом сделать это.через терминан.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Как вы видели в связанных вопросах, вы не можете загрузить исходный код PHP, просто запросив файл, по крайней мере, если на HTTP-сервере включено расширение PHP.

Но это ни в коем случаеподразумевается, что вы не можете загрузить PHP-скрипт при определенных обстоятельствах.

На сервере может быть установлен PHP-скрипт, работающий в качестве прокси-сервера для обхода синтаксического анализа PHP и отправки вам исходного кода любого PHP-файла на сервере.Он просто должен установить несколько заголовков и передать их вам простым readfile(filename).Конечно, это обычно делается после проверки того, что вы авторизованы.

Кроме того, адрес ссылки не всегда является адресом, к которому вы фактически обращаетесь, когда нажимаете ссылку.Он может содержать действие onclick, которое переопределяет href, и может быть размещено там динамически, так что вы не узнаете об этом, даже если вы проверите исходный код HTML.

Один простой способ понятьто, что на самом деле делает ссылка, - это нажмите Ctrl + Shift + C в Firefox или Chrome, перейдите на вкладку «Сеть» и нажмите на ссылку, чтобы увидеть, к чему она действительно обращается.

Могу поспорить, что она не имеет доступафайл прямо, как вы думаете.

0 голосов
/ 29 сентября 2018

в вашем браузере есть куки, wget нет, это почти наверняка файл, защищенный куки, только те, у кого есть корректные (аутентификационные?) Файлы cookie, могут получить к нему доступ, wget не может.в chrome откройте консоль разработчика, перейдите на вкладку «Сеть», загрузите файл в chrome, найдите запрос на вкладке «Сеть», щелкните правой кнопкой мыши вкладку и нажмите «копировать как завиток», и вы увидите, как выглядит запрос с печеньями, это будет выглядеть примерно так:

curl '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 = ваш + браузер + имеет + куки% 2C + wge & oldBody = & isQuestion = false' --compressed

  • , и если вы запустите эту команду в bash, вывозможно, удастся загрузить файл с терминала.
...