Como posso visualizar a fonte de uma página [web] diretamente no terminal?

0

Eu já ouvi falar de lynx e links e outros navegadores baseados em texto e eles são bons, mas eu quero obter as mesmas informações que eu veria executando View Page Source no Firefox, por exemplo. (O IE e o Chrome têm suas próprias funcionalidades semelhantes.)

É possível visualizar essa fonte via Terminal (ou CLI) navegando até a página em um aplicativo baseado em terminal ou usando comandos? Isso não é tão simples quanto usar wget em uma página, pois isso não preencherá informações com script (.cgi, .php, .js, etc.).

    
por user3.1415927 16.03.2018 / 18:50

2 respostas

0

Muitos navegadores CLI / TUI possuem recursos de visualização de código-fonte integrados. No Lynx ou Links, a função de atalho para exibir a origem é \ . No w3m é v . Para outros navegadores, consulte a documentação relevante.

    
por 17.03.2018 / 12:50
0

Existem duas maneiras fáceis de obter o que você deseja (o texto retornado por, por exemplo, view-source: )

Supondo que o Python esteja instalado, você pode obter Solicitações usando pip (com algo como python -m pip install requests ) ou pode visitar os Solicita a página do PyPi .

Observe que, em ambos os casos, você deve reservar um momento para escolher uma string User-Agent adequada. Você pode "Qual é minha string de agente de usuário?" do Google em qualquer navegador que você deseja emular para ver a string atual do User-Agent associada ao seu navegador da GUI.

wget

Como sugerido por @Attie e @ivanivan, wget pode recuperar a mesma fonte exibida por um navegador da GUI com 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

No exemplo acima, -O (a opção do arquivo de saída) e -U (a opção de string User-Agent) são a chave para recuperar o mesmo formato que você pode ter, digamos, no Firefox. Este método tem a pequena desvantagem de que você precisará para exibir ex. pagesource.html na linha de comando você mesmo.

Python

Sua outra opção é usar o Python com solicitações, como já mencionado.

Para obter a origem da página atual, como visto com, por exemplo, view-source: , crie um script semelhante ao seguinte:

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)

Você salva este script como algo como pagesource.py , em seguida, o chama na linha de comando ex. :

python pagesource.py | more

more simplesmente impede que a página inteira seja descartada de uma só vez. Vale a pena mencionar que os objetos de resposta têm um atributo content (que é muito semelhante a text para nossos propósitos), mas text neste caso emula mais de perto o que é retornado por um navegador da GUI ao visualizar o código-fonte de uma página. / p>

Processamento de páginas

This isn't as simple as using wget on a page, as that won't fill scripted info (.cgi, .php, .js, etc.).

As páginas renderizadas por meio de scripts do lado do servidor ( .cgi / .php em sua pergunta) têm seu código-fonte gerado como texto (ou seja, .html e JavaScript) antes sendo entregue ao navegador.

Com JavaScript, o navegador processa qualquer Javascript em uma página renderizada final (não há um formulário "intermediário"). O navegador realmente altera o código da página nesses casos (modifica o que você vê em view-source: ). Da mesma forma, o navegador toma medidas extras para seguir os links e baixar os recursos necessários (por exemplo, .css , arquivos de mídia, etc.) para exibição final.

O que isto significa é que o que você vê na "origem da página" do navegador é (em geral) exatamente o que o navegador usa para renderizar a página inicialmente. Se um link .html para um item (digamos, uma imagem ou vídeo) não existir, ele não existe (embora isso não exclua necessariamente que qualquer código JavaScript seja informativo).

Dito isso, você pode anotar e experimentar diferentes strings do User-Agent. Servidores que geram dinamicamente conteúdo geralmente o fazem com base nessas cadeias. Portanto, pelo menos teoricamente, é possível que uma página gere mais links de recursos tradicionais versus código JavaScript com base, por exemplo, em um navegador para dispositivos móveis em vez de em uma cadeia de caracteres do navegador da área de trabalho.

    
por 17.03.2018 / 12:40