em

Como fazer login e enviar dados HTML usando apenas PHP

Recentemente eu estava procurando uma solução para automatizar uma tarefa que faço diariamente que é basicamente logar em alguns sites e preencher os formulários com relatórios, as informações são as mesmas e os forms também são praticamente iguais.
O problema então seria criar um script que automatizasse essa tarefa que é praticamente um control-c control-v…

Qual a solução?

http://snoopy.sourceforge.net/

Snoopy é uma classe PHP que simula um navegador web. Ele automatiza o
tarefa de recuperar o conteúdo da página web e enviar formulários, por exemplo.

Algumas das características do Snoopy:

* busca conteúdo de uma página web;
* busca textos de uma página web (retirando as tags HTML)
* buscar links a partir de uma página web
* suporta proxy
* suporte a autenticação usuário / senha
* suporta a configuração de  user_agent, referer, cookies e conteúdo do cabeçalho
* suporta redirecionamentos
* envia dados de formulário e recuperar os resultados
* aceita cookies

Para começar a brincar com o Snoopy basta copia-lo para o diretório de seu projeto,dar um include em sua classe e criar o novo objeto.

<?php
include "Snoopy.class.php";
$snoopy = new Snoopy;
?>

Exemplo básico de uso:

<?php
/*
Baixe snoopy.class.php em
http://snoopy.sourceforge.net/
*/
include("snoopy.class.php");
$snoopy = new Snoopy;
// definido um proxy?:
//$snoopy->proxy_host = "my.proxy.host";
//$snoopy->proxy_port = "8080";
// definindo um user agent e referer:
$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$snoopy->referer = "http://www.jonasjohn.de/";
// definindo algumas cookies:
$snoopy->cookies["SessionID"] = '238472834723489';
$snoopy->cookies["favoriteColor"] = "blue";
// definido raw-header:
$snoopy->rawheaders["Pragma"] = "no-cache";
// definido algumas variáveis internas:
$snoopy->maxredirs = 2;
$snoopy->offsiteok = false;
$snoopy->expandlinks = false;
// definindo nome de usuário e senha(opcional)
//$snoopy->user = "joe";
//$snoopy->pass = "bloe";
// buscar texto no site www.google.com::
if($snoopy->fetchtext("http://www.google.com")){
// outros métodos: buscar, buscar em forms, busca de links, enviar textos e enviar links
// código de resposta:
print "código de resposta: ".$snoopy->response_code."n";
// imprimir os cabeçalhos(headers):
print "Headers:";
while(list($key,$val) = each($snoopy->headers)){
print $key.": ".$val."n";
}
print "n";
// imprimir os textos do site:
print "<pre>".htmlspecialchars($snoopy->results)."</pre>n";
} else { print "Snoopy: Erro ao buscar documento: ".$snoopy->error."n"; } ?>

Gostou dessa matéria?

Inscreva seu email para receber atualizações com as últimas publicações do nosso blog.

2 opinaram!

Deixe sua opinião!
  1. Olá, gostei muito da dica do Snoopy, ainda não conhecia. Porém, estou com uma duvida.
    Quando envio um submit, ele faz a autenticação tudo certinho, porem, no que eu autentico ele é redirecionado. Por exemplo:

    O site que quero fazer o submit é esse:
    xxx/login

    Quando faço o login vai para

    xxx/joao/maria

    Dai aonde eu estou executando o meu arquivo vai o joao/maria tambem, dai da erro, porque não tenho isso no meu site.

    Como eu faço para enviar um submit, e receber a resposta via fetch?

    • Olá Marcelo, não entendi sua dúvida, vc passou poucos detalhes, agora se vc conseguiu passar pela tela de login com sucesso então basta aperfeiçoar seu script para tratar o redirecionamento, o fetch pode ser feito buscando os dados em tags HTML especificas dentro de sua página, estude o código, se ele estiver bem estruturado (id,class,etc) funcionara semelhante a um XML.

Deixe o seu comentário: