Как я могу просмотреть источник [веб] страницы прямо в терминале?

456
user3.1415927

Я слышал о lynx, ссылках и других текстовых браузерах, и это нормально, но я хочу получить ту же информацию, что и при запуске View Page Sourceв Firefox, например. (IE и Chrome имеют свои аналогичные функции.)

Можно ли просмотреть этот источник через терминал (или CLI), перейдя на страницу в приложении на основе терминала или используя команды? Это не так просто, как использовать wgetна странице, так как это не заполняет скриптовую информацию (.cgi, .php, .js и т. Д.).

0
Я видел завиток - как это отвечает на вопрос? user3.1415927 6 лет назад 0
Это не "_answer_" само по себе ... Как я уже говорил, вы _не можете получить исходный код для файлов PHP и тому подобного с правильно настроенного сервера ... Даже префикс `view-source:` не будет этого делать ... Attie 6 лет назад 0
Используйте `wget` с опцией` -O -`. То, что @Attie говорит о захвате источника на стороне сервера, верно - вы увидите только то, что отправлено браузером. в случае страниц, созданных с использованием javascript, вы МОЖЕТЕ увидеть js или, по крайней мере, ссылки на него с URL-адресами, чтобы снова загрузить и получить его. ivanivan 6 лет назад 0

2 ответа на вопрос

0
Anaksunaman

Вероятно, есть два простых способа получить то, что вы хотите (текст, возвращаемый, например, view-source:)

Предполагая, что Python установлен, вы можете получать запросы, используя pip(с чем-то вроде python -m pip install requests), или вы можете посетить страницу запросов PyPi .

Обратите внимание, что в любом случае вам нужно потратить некоторое время, чтобы выбрать подходящую строку User-Agent . Вы можете Google "Какова моя строка агента пользователя?" в любом браузере вы хотите эмулировать, чтобы увидеть текущую строку User-Agent, связанную с вашим браузером GUI.


Wget

Как предложили @Attie и @ivanivan, wgetможно получить тот же источник, который отображается в браузере с графическим интерфейсом с помощью ex. :

wget -O pagesource.html -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0" --no-check-certificate https://www.google.com 

В приведенном выше примере -O(опция выходного файла) и -U(опция строки User-Agent) являются ключом для получения того же формата, который вы могли бы иметь, скажем, в Firefox. Этот метод имеет небольшой недостаток, который вам понадобится для отображения ex. pagesource.html в командной строке самостоятельно.


питон

Другой вариант - использовать Python с запросами, как уже упоминалось.

Чтобы получить фактический исходный код страницы, например view-source:, создайте скрипт, подобный следующему:

import requests  user_agent = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'} url = 'https://www.google.com'  response = requests.get(url, headers = user_agent)  print(response.text) 

Вы сохраняете этот скрипт как что-то вроде pagesource.py, а затем вызываете его из командной строки ex. :

python pagesource.py | more 

moreпросто предотвращает сброс всей страницы сразу. Стоит отметить, что у объектов ответа есть contentатрибут (который очень похож textна наш), но textв этом случае он более близко имитирует то, что возвращается браузером с графическим интерфейсом при просмотре исходного кода страницы.


Отображение страниц

Это не так просто, как использование wgetна странице, как не заполнит скриптовую информацию ( .cgi, .php, .jsи т.д.).

Страницы, отображаемые с помощью сценариев на стороне сервера ( .cgi/ .phpв вашем вопросе), имеют исходный код, сгенерированный в виде текста (то есть .htmlи JavaScript) перед передачей в браузер.

С помощью JavaScript браузер обрабатывает любой Javascript в конечную визуализированную страницу (нет «промежуточной» формы). Браузер фактически изменяет код страницы в этих случаях (он изменяет то, что вы видите view-source:). Аналогично, браузер предпринимает дополнительные действия для перехода по ссылкам и загрузки необходимых ресурсов (например .css, медиа-файлов и т. Д.) Для окончательного отображения.

Это означает, что то, что вы видите в «источнике страницы» браузера, - это (вообще говоря) именно то, что браузер использует для первоначальной визуализации страницы. Если .htmlссылка на элемент (например, изображение или видео) не существует, она не существует (хотя это не обязательно препятствует тому, чтобы какой-либо код JavaScript был информативным).

Тем не менее, вы можете принять к сведению и поэкспериментировать с различными строками User-Agent. Серверы, которые динамически генерируют контент, часто делают это на основе этих строк. Следовательно, теоретически возможно, что страница может генерировать более традиционные ссылки на ресурсы по сравнению с кодом JavaScript на основе, например, мобильного браузера или строки браузера на рабочем столе.

0
Ignacio Vazquez-Abrams

Многие браузеры CLI / TUI имеют встроенную возможность просмотра источника. В Lynx или Links привязка клавиш для просмотра источника - это \. В w3m это так v. Для других браузеров смотрите соответствующую документацию.