Como analisar um link para descobrir o link real

13

Às vezes, ao fazer o download de algo, acho que os links não são 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 de tais e similares técnicas de não mostrar links diretos? Algumas referências, como a Wikipedia, ...?

    
por Tim 08.08.2011 / 01:56

14 respostas

3

Sim, às vezes .

Existem duas coisas que geralmente acontecem. Seu link não funciona mais, então não tenho certeza do cenário atual, então vou resumir em outro link.

Redirecionamento HTTP

Isso é o que você vê com Bit.ly e outros serviços. O que fazer então é fornecer uma resposta de redirecionamento HTTP. Quando você visita o link , ele redireciona para o URL real. Às vezes, um URL redireciona para outro. Você pode ver isso acontecendo se você conectar a URL no link ou usando [curl][1] -I http://bit.ly/oH3410 você verá retornará um 301 apontando para um novo local .

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

Página do Downloader

Isso é o 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" algo parecido. [ Exemplo ]. Com esses, você pode tentar analisar o link direto do URL, mas isso seria específico do site, e a maioria dos sites não o incluirá para evitar que você o contorne. Isso é feito por meio de uma tag meta http-equiv="refresh" no cabeçalho ou JavaScript (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 tag <meta http-equiv="refresh"> (geralmente em uma tag <noscript> ) com um atributo de URL que aponta para o download real. Portanto, use CURL (ou qualquer outra ferramenta HTTP) para baixar a página, analisá-la e pegar esse valor. Um site pode excluir isso, se quiser ser realmente desagradável, exigindo que você tenha JavaScript para baixar arquivos.

Existe provavelmente um bloco de JavaScript que também está vinculado ao download. Pode ser ofuscado ou vinculado por outro URL. Sua milhagem pode variar tentando analisar isso. Também pode haver um "link direto" na página. Você poderia tentar algumas técnicas para encontrar isso, mas novamente isso poderia ser ofuscado via JavaScript ou até mesmo perder todos juntos.

    
por 12.08.2011 / 19:38
11

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

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

    
por 08.08.2011 / 02:02
7

O site pode ser roteirizado e, quando recebe um determinado comando (a URL pode passar um comando), ele pode retornar um arquivo PDF (ou algum outro arquivo), sem redirecionar. Há 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 que você saiba 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.

    
por 08.08.2011 / 03:26
3

Esse é praticamente o URL "verdadeiro", pois nesses sites bem protegidos, você deve enviar o URL completo para o servidor autenticar sua solicitação. Você pode ser direcionado para outra URL depois, mas normalmente será uma única vez. Em outras palavras, esses sites de download de arquivos nunca fornecerão links diretos para coleta de dados.

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

    
por 08.08.2011 / 03:21
3

Esses links de redirecionamento também costumam estar associados ao estado da sessão. Eles farão a verificação de privs, com base no login da sessão, antes de fornecer o link - sem acesso ao recurso = sem acesso ao link para o recurso. 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 por meio de URL direto. Mas somente se seus privs permitirem isso.

Um exemplo de ambos é aqui. Ele redirecionará você para outro URL, com base na string 'mkoenig' que adiciona parâmetros de URL adicionais. O redirecionamento é feito na codificação do lado do servidor, que você não poderia (ou pelo menos não deveria) ser capaz de ver. Se você for para 'Arquivos da Web', os arquivos listados são apenas os arquivos que o professor tornou público. Ela pode ter outros arquivos que você não pode acessar e que não serão listados. Isso também é tratado na codificação do lado 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 puder, talvez não seja útil, a menos que suas sessões privadas digam ao servidor acesso a ele.

Greg

    
por 08.08.2011 / 04:38
2

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

Editar

Não sabendo qual sistema operacional você está usando, vou dar 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 SO. Então, isso torna conveniente como um pedaço de papel. Tudo o que acontece dentro da VM não afeta sua máquina real.

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

O Sandboxie é uma espécie de VM, mas apenas isola aplicativos específicos. Você pode dizer-lhe para executar uma cópia do seu navegador e quaisquer arquivos ou ações que o navegador faz é redirecionado para uma pasta temporária essencialmente. Portanto, se tentar baixar um vírus, ele será redirecionado para uma pasta temporária que está 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 o Sandboxie primeiro. É uma curva de aprendizado menor.

    
por 08.08.2011 / 02:04
2

nunca é possível descobrir o link real.

O servidor lida com as requisições de arquivos, usando alguns WWW Rewrite (para servidores apache, por exemplo), assim por exemplo, você poderia estar indo para uma página www.example.com/13-this-site-has-nice-page-name.html , mas na realidade você poderia 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 ir para uma página que é apenas um manipulador de download, por exemplo: www.example.com?file_downloader.php?param1=7683&param2=jld8ijn, etc... Neste caso, o script que você está acessando pode ser enviado com um cabeçalho (como o arquivo pdf), mas na verdade é um arquivo php.

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

    
por 08.08.2011 / 12:14
1

Quando você envia uma solicitação para um servidor da 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 verá esse porque geralmente é acompanhado pela página que você 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 seu navegador que a resposta desejada foi movida para outro local. A principal diferença entre eles é como o navegador armazena as coisas em cache. Um código 301 significa "movido permanentemente" e, na próxima vez que você tentar visitar o link original, o navegador pode lembrar 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, contanto que você receba 30x respostas, siga a resposta até que finalmente obtenha um 200. Nesse ponto, em vez de baixar o conteúdo, ele deve mostrar a ligação.

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çalho da página que se parece com isso: <meta http-equiv="refresh" content="0;url=NEW PAGE URL" /> . Então, um programa desse tipo já teria que analisar completamente o html para ter certeza de que alcançamos o último redirecionamento.

Além disso, uma página pode redirecioná-lo ainda mais usando javascript, e o javascript pode ficar ofuscado. Então agora o nosso programa hipotético também tem que entender o javascript. Neste ponto, temos um navegador da Web totalmente funcional. Estamos perdendo o pequeno detalhe de realmente 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 em situação melhor do que se tivesse clicado no link normalmente em primeiro lugar.

    
por 08.08.2011 / 05:24
1

Assumindo o Windows: Instale Proxy de Depuração da Web do Fiddler , habilite-o. Em seguida, navegue até seu 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 propósito.

Por outro lado, a URL "final" sozinha pode não funcionar da mesma maneira se você navegar diretamente para ela, porque a solicitação pode não ter o referenciador correto ou não ter outras restrições.

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

    
por 08.08.2011 / 13:41
0

Isso depende muito do site.

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

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

    
por 08.08.2011 / 07:48
0

Para verificar onde um link redireciona você para você, use o link . É especialmente útil para URLs abreviados. Não tem utilidade para downloads de scripts, etc.

    
por 08.08.2011 / 11:15
0

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

link

Observe que ele interromperá muitos sites que usam um CDN (Content Distribution Network), pois, por padrão, ele bloqueia todas imagens entre domínios, scripts, css e redirecionamentos. Portanto, não é a escolha do ebst se você quiser saber sempre para onde um redirecionamento está indo, a menos que esteja preparado para passar por algumas etapas extras toda vez que visitar um novo site.

    
por 08.08.2011 / 11:26
0

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

    
por 08.08.2011 / 14:50
0

(Enquanto isso), existem ótimas ferramentas on-line para ajudar no rastreamento de redirecionamentos.

E há uma boa extensão para o Google Chrome.

por 30.11.2017 / 13:43