Como analisar um link para descobrir o link real


13

Às vezes, ao baixar algo, acho que os links não são os diretos para os arquivos.

Por exemplo, este é um link para baixar um arquivo PDF:

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

Eu queria saber como descobrir / hackear o link real (ou seja, http: //*.PDF) para o arquivo?

Quais são os nomes dessas técnicas semelhantes e similares de não mostrar links diretos? Algumas referências, como Wikipedia, ...?


1
Corrigido seu link. Clique editpara ver a fonte da remarcação de como eu fiz isso.
Joel Coehoorn

Respostas:


3

Sim, às vezes .

Há duas coisas que geralmente acontecem. Seu link não funciona mais, por isso não tenho certeza do cenário real nesse caso; portanto, resumirei em outro link.

Redirecionamento HTTP

É isso que você vê com Bit.lye outros serviços. O que fazer é fornecer uma resposta de redirecionamento HTTP. Quando você visita http://bit.ly/oH3410, ele é redirecionado para o URL real. Às vezes, um URL é redirecionado para outro. Você pode ver isso acontecendo se você conectar o URL em http://web-sniffer.net/ ou, usando [curl][1] -I http://bit.ly/oH3410você verá um retorno 301 apontando para um novo local.

Então, para lidar com o redirecionamento HTTP, você só precisa fazer um loop de uma solicitação HTTP HEAD até parar de obter respostas nos anos 300 (espero obter um 200). Lembre-se de que é possível que eles sejam redirecionados em um loop, o que nunca terminará. Você pode fazer isso com CURL ou qualquer ferramenta HTTP.

Página Downloader

É isso que a maioria dos sites de download usa. Você clica no link de download e leva você a uma página com vários anúncios e diz "Seu download começará em breve" de maneira semelhante. [ Exemplo ]. Com eles, você pode tentar analisar o link direto real a partir da URL, mas isso seria específico do site, e a maioria dos sites não o incluirá para impedir que você seja contornado. Isso é feito através de uma meta http-equiv="refresh"tag no cabeçalho ou JavaScript (o mais comum). O JS geralmente tem um fallback de cabeçalho.

Existe uma solução embora. Se você olhar a fonte na página de download, normalmente verá uma <meta http-equiv="refresh">tag (geralmente em uma <noscript>tag) com um atributo URLque aponta para o download real. Portanto, use CURL (ou qualquer outra ferramenta HTTP) para baixar a página, analisá-la e obter esse valor. Um site pode excluir isso se quiser ser realmente desagradável, exigindo que você tenha JavaScript para baixar arquivos.

Provavelmente existe um bloco JavaScript que também se vincula ao download. Pode estar ofuscado ou vinculado a partir de outro URL. Sua milhagem pode variar ao tentar analisar isso. Também pode haver um "link direto" na página. Você pode tentar algumas técnicas para descobrir isso, mas novamente isso pode ser ofuscado via JavaScript ou até mesmo perder todos juntos.


11

Pode não ser possível. Os sites podem fornecer centenas de redirecionamentos antes de você chegar ao arquivo.

Além disso, o javascript pode ser usado para fornecer links com base na URL que foi fornecida ao servidor.


Obrigado! Quais são os nomes dessas técnicas semelhantes e similares de não mostrar links diretos? Algumas referências, como a Wikipedia, ...?
Tim

1
Apenas redirecionamento. Não conheço outras técnicas. Veja aqui
soandos

Quando os links são para arquivos e não páginas regulares, geralmente é chamado de anti-sanguessuga .
Synetech

7

O site pode ter um script e, quando obtém um determinado comando (a URL pode passar um comando), pode retornar um arquivo PDF (ou outro arquivo), sem redirecionar. Existe uma coisa do lado do servidor e depende de como o site é codificado. Sem realmente solicitar esse link do servidor, é improvável que você descubra como obter o arquivo. E, às vezes, mesmo se você soubesse o URL direto, talvez não tenha permissão para acessar o link direto. Alguns sites são codificados para que os links diretos não funcionem.


1
Isto está certo. Pequena adição: quando um cliente está acessando um link obscuro como esse e o servidor deseja informar ao cliente que esse é realmente um arquivo pdf e deve ser salvo como arquivo pdf - o servidor informa ao cliente via HTTP do tipo de conteúdo cabeçalho.
vtest

3

Essa é praticamente a URL "verdadeira". Para os sites bem protegidos, é necessário enviar a URL completa para o servidor autenticar sua solicitação. Você pode ser direcionado para outro URL posteriormente, mas normalmente será único. Em outras palavras, esses sites de download de arquivos nunca fornecerão um link direto compatível com sanguessugas.

Nesse URL específico, os parâmetros, que são protegidos por uma assinatura digital, listam claramente as restrições de horário e IP do downloader. Para um site com esse nível de competência, é improvável que haja links diretos vazados.


3

Esses links de redirecionamento também são frequentemente associados ao estado da sessão. Eles farão algumas verificações privadas, com base no login da sua sessão, antes de fornecer o link - sem acesso ao recurso = sem acesso ao link. Ele pode ser usado para fornecer acesso a arquivos / recursos que estão fora da raiz da web e transmitido de volta ao solicitante pelo aplicativo, em vez de estar disponível via URL direta. Mas somente se seus privs permitirem.

Um exemplo de ambos está aqui. Ele o redirecionará para outro URL, com base na string 'mkoenig' que adiciona parâmetros adicionais de URL. O redirecionamento é feito na codificação do servidor, que você não (ou pelo menos não deveria) poderia ver. Se você for para 'Arquivos da Web', os arquivos listados serão apenas os arquivos que o professor tornou público. Ela pode ter outros arquivos por aí que você não pode acessar e que não serão listados. Isso também é tratado na codificação do servidor, com relação ao que ele irá / não retornará.

Sem invadir o servidor ou ter acesso ao código fonte do lado do servidor, não acredito que você possa obter o link real e, mesmo que possa, pode não ser útil, a menos que o privado da sessão diga ao servidor para lhe dar acesso a ele. .

Greg


2

Como acima, é impossível. Eu recomendo que você inicie uma VM ou pegue uma cópia do Sandboxie para conter seu navegador para links como esse.

Editar

Sem saber qual sistema operacional você está usando, darei uma resposta geral aqui.

Uma VM é a abreviação de uma máquina virtual. É basicamente um computador criado por software rodando dentro do seu computador. Uma máquina virtual terá seu próprio sistema operacional e navegador. Embora ainda use a Internet e o disco rígido da sua máquina, é uma máquina separada do ponto de vista do sistema operacional. Isso torna conveniente como um pedaço de papel de rascunho. Tudo o que acontece dentro da VM não afeta sua máquina real.

O Virtualbox é o software que eu recomendo para uma VM, a menos que você esteja usando o Windows, então eu recomendo o Virtual PC.

O Sandboxie é como uma VM, mas apenas isola aplicativos específicos. Você pode solicitar que ele execute uma cópia do seu navegador e quaisquer arquivos ou ações que o navegador execute serão redirecionados para uma pasta temporária. Portanto, se tentar baixar um vírus, ele será redirecionado para uma pasta temporária em quarentena do restante da sua máquina. Não é tão robusto quanto uma VM, mas usa menos CPU / Memória e é mais rápido e mais conveniente.

Eu tentaria primeiro o Sandboxie. É uma curva de aprendizado menor.


1
Obrigado! O que você quer dizer com "iniciar uma VM ou pegar uma cópia do Sandboxie para conter seu navegador para links como esse"? Algumas referências para explicar como fazer as duas coisas?
Tim

Desculpe, vou expandir minha resposta.
surfasb

Obrigado! Meu sistema operacional é o Ubuntu. Mas não entendo como o uso da VM pode identificar os links diretos?
Tim

1
Realmente não identifica o link para você. Mas cria um ambiente seguro que o ajudará a identificar o link. Você não pode identificar os redirecionamentos sem compilar a página.
Surfasb

1
Não acho que a pergunta dele seja relativa à segurança. Ele está apenas procurando uma maneira de obter o link direto do arquivo.
magnattic

2

Nunca é possível descobrir o link real.

O servidor lida com as solicitações de arquivo, usando alguns WWW Rewrite (para servidores apache, por exemplo); portanto, por exemplo, você pode estar acessando uma página www.example.com/13-this-site-has-nice-page-name.html, mas na realidade pode estar acessando algum arquivo php, com um parâmetro, como:www.example.com/site_handler.php?UID=13

mesmo se você acessar um arquivo pdf, pode haver um redirecionamento no próprio servidor.

Para downloads de arquivos com manipuladores, pode ser um pouco mais complicado, pois você pode acessar uma página que é apenas um manipulador de downloads, por exemplo: www.example.com?file_downloader.php?param1=7683&param2=jld8ijn, etc... Nesse caso, o script ao qual você está acessando pode ser enviado com um cabeçalho (como arquivo pdf), mas na verdade é um arquivo php.

em conclusão: você nunca pode saber como o servidor e os scripts estão configurados; portanto, nunca pode saber o endereço real e real, mesmo que pareça que você sabe.


1

Quando você envia uma solicitação para um servidor Web (clique em um link), o servidor pode enviar várias respostas diferentes. Exemplos comuns são 404 (página não encontrada), 403 (proibido) ou 500 (erro do servidor). Provavelmente, o código de resposta mais comum é 200 (Ok), mas você nunca o verá, porque geralmente é acompanhado pela página que esperava ver.

Existem alguns outros códigos em jogo aqui: 301 e 302. Os códigos 301 e 302 são códigos de redirecionamento e informam ao navegador que a resposta que você queria foi movida para outro local. A principal diferença entre eles é como o navegador armazena em cache as coisas. Um código 301 significa "movido permanentemente" e, da próxima vez que você tentar acessar o link original, o navegador poderá se lembrar de que a página foi movida e ir diretamente para o novo local. 302 significa "Encontrado em outro lugar" e fornecerá um link que seu navegador deve usar apenas temporariamente.

Deve ser possível escrever um programa que verifique um link e, desde que você receba respostas de 30x, siga a resposta, até que finalmente chegue a 200. Nesse ponto, em vez de baixar o conteúdo, ele deve mostrar o link.

Infelizmente, também é mais complicado que isso. Uma página HTML também pode redirecionar para um novo local usando uma meta tag na seção de cabeça da página que é algo como isto: <meta http-equiv="refresh" content="0;url=NEW PAGE URL" />. Portanto, esse programa já teria que analisar completamente o html para garantir que alcançamos o último redirecionamento.

Além disso, uma página pode redirecioná-lo ainda mais usando javascript, e o javascript pode estar ofuscado. Então agora o nosso programa hipotético também precisa entender o javascript. Neste ponto, temos um navegador da web totalmente funcional. Faltam os pequenos detalhes para renderizar uma página na tela, mas nosso programa tem quase tudo o que você precisa para um navegador da Web completo, incluindo todos os problemas de segurança que o acompanham. Você não está mais melhor do que se tivesse acabado de clicar no link normalmente em primeiro lugar.


1

Supondo que o Windows: instale o Fiddler Web Debugging Proxy , ative-o. Em seguida, navegue até o URL inicial e assista a todos os redirecionamentos no painel esquerdo do Fiddler. No painel direito, altere as guias para mostrar "Cabeçalhos de solicitação" e "Cabeçalhos de resposta". Eu usei com sucesso exatamente para esse fim.

Por outro lado, o URL "final" sozinho pode não funcionar da mesma maneira se você o procurar diretamente, pois a solicitação pode não ter o referenciador correto ou perder algumas outras restrições.

Mas você pode até enviar solicitações personalizadas com cabeçalhos personalizados no Fiddler. Veja a aba "Request Builder" para isso.


0

Isso depende muito do site.

Para fazer isso, você deve estudar cada site individualmente e ter um mecanismo (ou código) separado para que cada site retorne o URI direto.

Você também pode estudar alguns complementos de navegador de código aberto que oferecem funcionalidade semelhante.


0

Para verificar para onde um link o redireciona, você pode usar http://longurl.org/ . É especialmente útil para URLs encurtados. É inútil para downloads com script etc.


0

Se você estiver usando o Firefox, poderá usar um complemento chamado RequestPolicyque, entre outras coisas, fará uma pausa e solicitará permissão sempre que você for redirecionado para um domínio diferente. Não funcionará se você quiser encontrar um redirecionamento que não vá para um domínio diferente, mas tenho certeza de que há um Firefox Addon diferente para o qual não conheço =)

https://www.requestpolicy.com/

Observe que ele quebrará muitos sites que usam uma CDN (rede de distribuição de conteúdo), pois, por padrão, bloqueia todas as imagens, scripts, css e redirecionamentos entre domínios. Portanto, não é a melhor opção se você sempre sabe para onde está indo um redirecionamento, a menos que esteja preparado para executar algumas etapas extras toda vez que visitar um novo site.


0

Não tenho muita certeza, mas se você estiver usando o CUrl, não poderá obter apenas o conteúdo da URL (get_file_contents (url) no PHP) e verificar o tipo MIME?


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.