Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo P. Dias

Preencher formulário por script(sem entrar na página)

Recommended Posts

Olá!

 

Sou novo no fórum. Espero que possam me ajudar.

 

Gostaria de criar um script em PHP que preenchesse um formulário de uma página e desse um submit no mesmo, mas sem a necessidade de entrar na página.

Pois gostaria de ter acesso a algumas páginas dentro desse site que só podem ser acessadas com login. Seria possível abrir a página no meu site de um modo escondido ou criando um objeto que abra um novo navegador com o site do formulário?

OBS: O site que contém o formulário e as páginas que precisam ser acessadas não é feito em PHP e sim em JSP.

 

Obrigado! http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

então explica ai se possível porque dessa eu não sabia, não sei como que um cara vai preencher todos os campos de um form e submeter o mesmo sem abrir a página... AJAX ? essa eu quero entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê uma estudada na lib curl que alcançará seu objetivo.

Como já citado pelo fabyo,se precisar de exemplos só falar.

Abraço!

 

Ps:também é possivel com ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso mesmo com curl

 

com ela você simula um navegador e manda dados via post ou get, e ate simula cookie para dizer que ja esta logado

e nome do navegador etc...

 

eu ja usei muito isso = )

 

antes eu jogava travian e criei muitos scripts pra deixar meu jogo automatico, eu nem precisava entrar no jogo = )

 

mas se quiserem um passo a passo eu explico melhor

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK Vamos la

 

o principio do curl é simular um navegador, ele envia informações e mensagens para um servidor e recebe de volta o que o servidor respondeu

 

por isso que é impossivel esconder o html, css e javascript de uma pagina, muitos acham que consegue, codificam e fazem muita coisa pra esconder o html, mas isso tudo é besteira.

 

1º O html nao foi criado para ser escondido.

2º O Navegador nao entende nada das codificações que os usuarios inventam, ou seja por mais que você codifique um codigo, na hora H alguem tem que traduzir isso para o navegador, senao ele nao vai mostrar nada porque ele só entende html normal.

 

ai que vem a jogada, por mais inteligente que seja um site criptografado, basta simular um navegador e pronto você ja tem todo conteudo descriptografado sem dor de cabeça.

 

e é isso que o curl faz.

 

bom voltando ao assunto, um exemplo simples do curl, vamos logar aqui no iMasters.

 

com curl vou enviar um login e senha para o servidor vai receber esses dados e testar, sendo valido esse login

 

o servidor me responde que ta OK e ja me manda um cookie para eu salvar, porque ele pensa que sou um navegador e quem tem o trabalho de salvar o cookie na maquina do cliente é o navegador, por isso quando você loga num site usando um navegador e depois vai com outro navegador você tem que logar novamente.

 

revisando

 

1 passo, mando os dados de usuario e senha o servidor responde e me devolve o cookie.

2 passo, salvo esse cookie, dai depois se quiser entrar sempre logado, basta mostrar pro servidor o mesmo cookie que ele te enviou, simples nao ? = )

 

script que envia os dados para o servidor e ja recebe os cookies

 

curl1.php

 

obs: claro que nao coloquei meus dados de login, se quiser testar você tem que colocar seus dados ok?

 

<?php
set_time_limit(0);

$url = "http://forum.imasters.com.br/index.php?act=Login&CODE=01";
$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 FirePHP/0.2.1";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

$headers[] = "POST /index.php?act=Login&CODE=01 HTTP/1.1";
$headers[] = "Host: forum.imasters.com.br";
$headers[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$headers[] = "Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3";
$headers[] = "Accept-Encoding: gzip,deflate";
$headers[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$headers[] = "Keep-Alive: 300";
$headers[] = "Connection: keep-alive";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
$headers[] = "Content-Length: 95";

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
curl_setopt($ch, CURLOPT_REFERER, "http://forum.imasters.com.br/index.php?act=Login&CODE=00");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "referer=http%3A%2F%2Fforum.imasters.com.br%2F&UserName=???&PassWord=???&CookieDate=1");
curl_setopt($ch, CURLOPT_POST, 1);

$retorno = curl_exec($ch);
curl_close($ch);

echo $retorno;
?>

 

no lugar dos ??? basta colocar seu nome e senha.

 

como podem ver eu tou dando um echo para ver o que ta retornando, mas num script automatico, você pegaria o retorno e separaria o cookie para poder salvar.

 

script que ja entra no site logado:

 

<?php
set_time_limit(0);

$url = "http://forum.imasters.com.br";
$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 FirePHP/0.2.1";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

$headers[] = "POST /index.php?act=Login&CODE=01 HTTP/1.1";
$headers[] = "Host: forum.imasters.com.br";
$headers[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$headers[] = "Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3";
$headers[] = "Accept-Encoding: gzip,deflate";
$headers[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$headers[] = "Keep-Alive: 300";
$headers[] = "Connection: keep-alive";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
$headers[] = "Content-Length: 95";

$cookie = "seu cookie que você pegou no script anterior lembra?";

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
curl_setopt($ch, CURLOPT_REFERER, "http://forum.imasters.com.br");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

$retorno = curl_exec($ch);
curl_close($ch);
?>

 

explicando as opções do curl

 

CURLOPT_HTTPHEADER = envio os header para o servidor

CURLOPT_USERAGENT = digo para o servidor quem sou eu ou seja o nome do navegador

CURLOPT_REFERER = digo para o servidor de que pagina estou vindo

CURLOPT_RETURNTRANSFER = aqui eu digo se quero que a pagina ja apareça na tela ou retorne em uma variavel para eu usar depois

CURLOPT_NOBODY = defino se quero que ele traga o conteudo ou nao

CURLOPT_HEADER = aqui eu digo se quero ver as mensagens do servidor, se eu quero só o html entao deixo isso em false

CURLOPT_COOKIE = aqui passo o cookie para o servidor ja pensar que eu to logado e deixar eu entrar

 

bom pessoal é isso ai, é simples mas é facil

 

eu tenho vontade de montar um tutorial sobre curl, se der em breve eu monto um.

só nao usem para hackear sites hem = )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um exemplo melhor e testei ta funcionando 100%

 

o 1 script envia os dados e loga pegando o cookie o 2 script você só tem que passar o valor desse cookie para poder entrar logado no forum

 

com esse esquema da ate para postar sem precisar entrar no forum = ), claro que você precisa primeiro saber o id do topico

 

curl_pegar_cookie.php

 

<?php
set_time_limit(0);

$url = "http://forum.imasters.com.br/index.php?act=Login&CODE=01";
$user_agent = $_SERVER["HTTP_USER_AGENT"];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

$headers[] = "POST /index.php?act=Login&CODE=01 HTTP/1.1";
$headers[] = "Host: forum.imasters.com.br";
$headers[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$headers[] = "Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3";
$headers[] = "Accept-Encoding: gzip,deflate";
$headers[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$headers[] = "Keep-Alive: 300";
$headers[] = "Connection: keep-alive";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
$headers[] = "Content-Length: 95";

$usuario = "xxx";
$senha   = "xxx";

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_REFERER, "http://forum.imasters.com.br/index.php?act=Login&CODE=00");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "referer=http%3A%2F%2Fforum.imasters.com.br%2F&UserName=$usuario&PassWord=$senha&CookieDate=1");
curl_setopt($ch, CURLOPT_POST, 1);

$retorno = curl_exec($ch);
curl_close($ch);

preg_match_all("#Set-Cookie: (.*?;)#", $retorno, $dados);

$mb_member_id = $dados[1][1];
$mb_pass_hash = $dados[1][2];

$cookie = "$mb_member_id $mb_pass_hash";

//mostrando o valor do cookie ja pronto para usar no outro script
echo $cookie;

?>

 

curl_logado.php:

 

<?php
set_time_limit(0);

$url = "http://forum.imasters.com.br/index.php?showforum=3";
$user_agent = $_SERVER["HTTP_USER_AGENT"];

$cookie = "aqui é o valor que você pegou no script acima";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

curl_exec($ch);
curl_close($ch);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como sim

 

da ate para você entrar em pagina restrita por login

 

se quiser que eu explique como poste ai o que você quer fazer exatamente

Eu consigo fazer um script usando curl, para além de logar automatizar um processo de preenchimento de formulários? Ex: Tem um form enorme, a pessoa vai preencher uma planilha de excel e eu leio a planilha e dou submit no form com os dados da planilha. Manja?

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.