Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Phillipe Santos

Script para copiar código-fonte de uma url

Recommended Posts

Olá pessoas,

 

recentemente precisei de um script para copiar o código-fonte de uma url(na web) e salvar em uma variável. Coisa simples. Achei um código pela web, testei e funfou.

Agora o problema é: o código fonte que eu obtenho usando o script é semelhante ao que eu encontraria se acessasse a page pelo browser, botao direto e "code-view".

Semelhante, porém diferente. E diferente bem na parte que me interessa:

 

- Trecho do Code com o script:

 

<form action="/reviews/polls/placeVote/-9002700071975652957/blogger_template/25d8f561b8e06d2a" method="POST" id="voteForm" onsubmit="window.location.replace(getVoteFormUrl(this)); return false;"><input type="hidden" name="lnkclr" value="#369"> <input type="hidden" name="txtclr" value="#2a221a">

 

A sequência de 16 letras acima em vermelho NUNCA muda.

 

- Trecho do Code com o browser:

 

<form action="/reviews/polls/placeVote/-9002700071975652957/blogger_template/9b70b1bc0712f652" method="POST" id="voteForm" onsubmit="window.location.replace(getVoteFormUrl(this)); return false;"><input type="hidden" name="lnkclr" value="#369"> <input type="hidden" name="txtclr" value="#2a221a">

 

A sequência de 16 letras acima em vermelho SEMPRE muda.

 

- Meu código:

 

// link para o código-fonte que preciso
$site = "www.google.com/reviews/polls/display/-9002700071975652957/blogger_template/run_app?txtclr=%232a221a&lnkclr=%23336699&chrtclr=%23336699&font=normal+normal+15px+Arial%2C+Tahoma%2C+Helvetica%2C+FreeSans%2C+sans-serif&hideq=true&purl=http%3A%2F%2Fconfianteesporteclube.blogspot.com%2F";

// caso contrário, vamos separar o host da url relativa
ereg("^([^\/]*)(\/.*)$",$site,$saida);
$host = $saida[1];
$url  = $saida[2];

if (!$host) { $host = $site; }
if (!$url) { $url = '/'; } // contruir a URL
if (!ereg("^\/",$url)) { $url = '/'.$url; }

// conectar ao host e pedir a URL via método GET
$html = '';
$fp = fsockopen ($host, 80, $errno, $errstr, 300);
if (!$fp) {
    echo "Ocorreu um erro com $site e $host: $errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET $url HTTP/1.0\r\nHost: $host\r\n\r\n");
    while (!feof($fp)) {
        $html .= fgets ($fp,128);
    }
    fclose ($fp);
}

// separar as informações do servidor web do código HTML em si
list ($lixo,$html) = split("<",$html,2);
$html = '<' . $html;

// separar o código HTML por quebra de linha, assim podemos imprimir o número
// da linha
$linhas = split("\n",$html);
$cont = 0;
$linha = '';
for ( $x=0; $x<count($linhas); $x++ ) {
   $cont++;
   $linha .= $linhas[$x];
   $linha = ereg_replace("<","<",$linha);
   $linha = ereg_replace(">",">",$linha);
}
echo $linha;

Meu objetivo é obter o código-fonte do script que sempre muda a sequência de 16 letras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de tentar te ajudar, qual o motivo que você quer pegar o conteúdo desta pagina? É permitido fazer esta copia?

 

Carlos Eduardo

 

Carlos,

 

como disse, quero apenas copiar o código-fonte de um script CLIENT-SIDE. Todo e qualquer script client-side é passível de observação e cópia, afinal para você poder visualiza-lo é feita uma cópia para seu computador ;). Se eu copiasse arquivos do servidor, isso sim seria ilegal. Quanto ao meu objetivo, este é investigar uma brecha de segurança em um dos meus scripts, analisando este da Google. Não há nada ilegal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um código mais simples que talvez te sirva:

<?php
$arquivo = fopen('http://exemplo.com','r'); //Abre o arquivo no servidor

while(true) {
$linha = fgets($arquivo);
if ($linha==null) break;
echo $linha;
}
fclose($arquivo);
?>

Caso queira um arquivo como se ele estivesse em seu servidor, apenas adicione um header.

 

Ah, na linha 5, na 10 e loop do final do seu código, a função ereg() está obsoleta, desde o PHP 5.3.0.

Tente substituí-la por preg_match(). http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um código mais simples que talvez te sirva:

<?php
$arquivo = fopen('http://exemplo.com','r'); //Abre o arquivo no servidor

while(true) {
$linha = fgets($arquivo);
if ($linha==null) break;
echo $linha;
}
fclose($arquivo);
?>

Caso queira um arquivo como se ele estivesse em seu servidor, apenas adicione um header.

 

Ah, na linha 5, na 10 e loop do final do seu código, a função ereg() está obsoleta, desde o PHP 5.3.0.

Tente substituí-la por preg_match(). http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

jcalebe,

 

valeu pela ajuda... consegui diminuir meu código utilizando este aí. Porém continuo com o mesmo problema: a sequencia de 16 digitos aparece sempre a mesma. oO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu objetivo é obter o código-fonte do script que sempre muda a sequência de 16 letras.

 

Já parou para pensar que essa sequência pode ser modificada via Javascript ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Meu objetivo é obter o código-fonte do script que sempre muda a sequência de 16 letras.

 

Já parou para pensar que essa sequência pode ser modificada via Javascript ?

 

Neste caso eu preciso dá um echo no resultado do fopen pra o Javascript rodar, certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.