[Cascavel-pm] Post/Get/Cookies Me ajudem!!!!! =)

Gabriel Vieira gabriel em webclube.com
Quarta Dezembro 3 13:35:32 CST 2003


Opa estarei respondendo também após cada linha :)

Abraços,

Gabriel Vieira

> Gabriel Vieira wrote:
> > Olá Lista,
>
>    Oies, Gabriel.
>
> > fiz um script A que envia dados via socket em método POST para que este
> > loga-se a um script B.
>
>    A? B? Socket?
>    Como você está falando em Cookies, vou imaginar que você esteja
> tentando falar HTTP com alguém. =-] Se eu estiver supondo errado, por
> favor me corrija.
>


#################

Sim, dei os nomes A e B para os scripts para que ficasse mais fácil de se
entender.
No caso o get.pl (A) e o http://www.webclube.com/cgi/login.cgi (B).

Exato. Estou tentando fazer com que o get.pl (A) envie e receba dados do
login.cgi (B).
Para isso uso o LWP. (Socket) :)

#################


> > São enviados um login e uma senha pelo script A, e o script B reconhece
> > normalmente e libera o acesso.
> > O script B seta um cookie para o login e a senha, até aí sem problemas.
> > Porém, como quem está tentando acessar é um script perl(script A), os
> > cookies não são gravados.
>
>    Você está usando algum módulo para administrar isso, ou está falando
> HTTP diretamente com o servidor, via Socket?


#################

Uso o LWP::UserAgent.. a seguir estarei informando o código utilizado.

#################


>
> > Logo adicionei ao header do get/post a linha Cookies:
> > login=blabla&senha=blabla
>
>    Isto não se parece em nada com um Cookie... parece mais um parametro
> passado via GET, coisa que você não está usando... Cookies são
> cabeçalhos HTTP, devem ser passados juntamente com a requisição, no
> formato de cabeçalhos.
>

#################

Pois bem, eles são passados no cabeçalho, conforme verifiquei o formato é o
proposto acima, exemplo:
Host: 127.0.0.1
Cookies: oi=a&ola=b&opa=c
Content-type: text/html

[conteudo]

#################

e como informei + abaixo o login.cgi (B) lê os cookies, pois peço pra ele me
exibir o conteúdo de $ENV{'HTTP_COOKIE'} e o mesmo é feito, me informando o
login e a senha que passei através do get.pl (A).

#################


> > E fiz com com que o script B imprimisse na tela o conteúdo do
> > $ENV{'HTTP_COOKIE'}, o mesmo imprime perfeitamente
> > login=blabla&senha=blabla só que não os reconhece... Ele não libera o
> > acesso mais.
> > Quando EU acesso via web normal, o login é feito, o cookie salvo.. tudo
> > 100%, porém quando o script A tenta fazer a segunda etapa (navegar a
> > partir dos cookies passados via headers) o script B não trabalha
direito.
> >
> > Existe alguma informação a mais que deve ser passada via header para que
> > o script B funcione também quando acessado pelo script A?
>
>    Sim, existe.
>
> > Os navegadores impõem esta informação?
>
>    Como assim, 'impõem'? Eles seguem a RFC2616 e passam os cabeçalhos
> corretamente.
>

#################

Não foi muito feliz com o 'impõem' :~) mas foi a palavra que me veio. =)

#################


>    Para você ler, muito educativo:
>    [http://www.w3.org/Protocols/rfc2616/rfc2616.html]
>
> > Alguém tem idéia?
>
>    =]
>
> > Tá complicado de entender?? =P
>
>    Muito complicado.
>

#################

Foi oq imaginei heheh :P

#################


>    Por favor, diga qual o website onde você está tentando se conectar, e
> de preferência me deixe ver seu código... posso ajudar mais se souber do
> que eu estou falando.

#################
O código :)

#!/usr/bin/perl

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$header  = HTTP::Headers->new('Cookie'=>'login=*****&senha=*****',);
$req =
HTTP::Request->new('GET','http://www.webclube.com/cgi/login.cgi',$header,'');
$res = $ua->request($req);
print "content-type: text/html\n\n";
print $res->as_string;
exit;

Estou usando este módulo pq na programação final terei que acessar uma
página em HTTPS e verifiquei que ocorre o mesmo problema no HTTP normal que
é o problema que informei neste e-mail.

#################


>
>    Por outro lado, você poderia usar o LWP::Client ou o
> LWP::SimpleClient para navegar programaticamente em qualquer website. Ou
> o WWW:Mechanize, construído especificamente para o seu caso...
>
>    Espero que isso te ajude.
>    Se precisar de mais, por favor escreva.
>    []'z!


Agradeço :)

[]s




Mais detalhes sobre a lista de discussão Cascavel-pm