Obtendo o cookie usado pelo orkut via Google Authentication API

Publicado em 29/01/2008 por Gilson Maluko |


Para obter dados do famoso orkut, necessitá-se de um cookie chamado orkut_state.
Abaixo mostrarei como obter o valor do cookie e como usar esse cookie em aplicações.


Índice

    Fazendo a requisição do cookie

    • Enviando usuário & senha
    • Recebendo o valor auth

    Recebendo o cookie orkut_state

    • Fazendo o pedido
    • Recebendo o valor do cookie

    Exemplos

Fazendo a requisição do cookie

Nesta etapa enviaremos usuário & senha para obtermos o valor auth usado na sessão seguinte.

Uma pequena observação importante o Google da suporte a conexão segura(SSL), mas não exige que o conteúdo seja enviado de modo seguro.

Enviando usuário & senha

Use o pedido abaixo para receber o valor do auth usado na segunda parte.

GET https://www.google.com/accounts/ClientLogin?Email=Seu-Email-Aqui&Passwd=Sua-Senha-Aqui&service=orkut HTTP/1.1 CRLF
CRLF

É importante lembrar que se deve colocar “https://www.google.com” no pedido, caso não seja usado uma conexão segura, do contrário pode-se só usar ‘/accounts/Client…’

Não irei fazer ou falar sobre o controle de erro, para saber sobre os possíveis erros que pode acontecer leia isto.

Recebendo o valor auth

Caso o usuário e a senha estejam correto, e acima de tudo o servidor esteja em funcionamento, ele te mandará algo assim:

HTTP/1.1 200 OK
Content-Type: text/plain
Cache-control: no-cache
Pragma: no-cache
Content-Length: 626
Date: Thu, 08 Nov 2007 05:13:58 GMT
Server: GFE/1.3
Connection: Close
SID=DQAAAIkAAA...
LSID=DQAAAIsAAA...
Auth=DQAAAIwAAA…

Pronto, o nosso valor auth está na mão.

Recebendo o cookie orkut_state

Agora que já temos o valor do auth, o que só nos resta a fazer é o pedido do cookie ao orkut.

Fazendo o pedido

Use o pedido abaixo para receber o cookie.

GET /RedirLogin.aspx?auth=Valor-do-Auth-Aqui HTTP/1.1 CRLF
CRLF

Recebendo o valor do cookie

Caso o servidor esteja em funcionamento e o valor do auth esteja autêntico, o servidor mandará algo assim:

HTTP/1.x 302 Moved Temporarily
Cache-Control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Set-Cookie: orkut_state=ORKUTPREF=ID=12268830240277865173:…; Domain=www.orkut.com; Path=/; HttpOnly
Set-Cookie: orkut_state=; Domain=.orkut.com; Expires=Wed, 07-Nov-07 04:42:40 GMT; Path=/; HttpOnly
Content-Type: text/html; charset=UTF-8
Location: http://www.orkut.com/
Content-Encoding: gzip
Content-Length: 171
Server: GFE/1.3
Date: Thu, 08 Nov 2007 04:42:40 GMT

Pronto agora é só pegar o valor do cookie orkut_state e usar em suas aplicações.

Exemplos

Fiz alguns exemplos para o melhor entendimento dos processos.

PHP (Download)

*Para o funcionamento correto, deve-se ter os streams registrados e o módulo de socket habilitado.

<?php

header("Content-Type: text/plain");

$error = NULL;
$user = 'usuario';
$pass = 'senha';

// PHP4 - PHP5
function sock($host,$port) {
  global $error;
  if (function_exists('stream_socket_client')) { $handle =   @stream_socket_client($host.':'.$port,&$e0,&$e1); }
  elseif (function_exists('fsockopen')) { $handle = @fsockopen($host,$port,&$e0,&$e1); }
  if (!$handle || $e0 || $e1) { $error[0]= $e0; $error[1] = $e1; return false; }
  return $handle;
}

if ( false === ($handle = sock('www.google.com',80)) ) { print 'Error: '.$error[0].'# '.$error[1]."\n"; exit; }

print "Enviando Usuario e Senha…\n";

@fwrite($handle, "GET https://www.google.com/accounts/ClientLogin?service=orkut&Email=".urlencode($user)."&Passwd=".urlencode($pass)." HTTP/1.1\r\n\r\n\r\n");

print "Enviado Usuario e Senha.\n";

print "Recebendo valor do auth…\n";

while (!@feof($handle)) {
  if ( @preg_match('/^auth=([^\n\r]+)/i', @fgets($handle), $auth) ) {
    fclose($handle);
    unset($handle);
    break;
 }
}

if (!$auth[1]) { print "Error ao pegar o valor 'auth'\n"; exit; }

print "Valor 'auth' recebido.\n";

if ( false === ($handle = sock('www.orkut.com',80)) ) { print 'Error: '.$error[0].'# '.$error[1]."\n"; exit; }

print "Enviando pedido do cookie…\n";

@fwrite($handle, "GET /RedirLogin.aspx?auth=".$auth[1]." HTTP/1.1\r\nHost: www.orkut.com\r\n\r\n");

print "Pedido enviado.\n";

print "Recebendo valor do cookie…\n";

while (!@feof($handle)) {
  if ( @preg_match('/^set-cookie:\sorkut_state=([^;]+)/i', @fgets($handle), $cookie) ) {
    fclose($handle);
    unset($handle);
    break;
  }
}

if (!$cookie[1]) { print "Error ao pegar o valor do cookie"; exit; }

print "Cookie pegado com sucesso. veja o seu valor: ".$cookie[1]."\n\n";

# Pegando a sorte de hoje

print "Solicitanto sorte de hoje…\n";

if ( false === ($handle = sock('www.orkut.com',80)) ) { print 'Error: '.$error[0].'# '.$error[1]."\n"; exit; }

print "Enviando pedido…\n";

@fwrite($handle, "GET http://www.orkut.com/Home.aspx HTTP/1.1\r\nCookie: orkut_state=".$cookie[1]."\r\nAccept-Charset: ISO-8859-1\r\n\r\n");

print "Pedido enviado.\n";

print "Recebendo sorte de hoje…\n";

while (!@feof($handle)) {
  if ( @preg_match('/<b>Sorte\sde\shoje\s?:\s?<\/b>([^<]+)<br>/i', @fgets($handle), $sorte) ) {
    fclose($handle);
    unset($handle);
    break;
  }
}

if (!$sorte[1]) { print "Error ao pegar sua sorte de hoje"; exit; }

print "Sua sorte de hoje: '".str_replace("&nbsp;","",$sorte[1])."'\n";

?>

mIRCscript (Download)

;
; Sintaxe
;   /GetSorte
;
; Descrio
;   Retorna a "sorte de hoje", primeiro deve-se usar o "/getOrkutCookie"
;
alias GetSorte {
  if (!%Orkut.Cookie) {
    echo -s * Cookie no encontrado, primeiro use //getOrkutCookie usurio senha
    return
  }
  unset %Orkut.Sorte
  sockopen GetSorte www.orkut.com 80
}
on *:sockopen:GetSorte:{
  var %sn = $sockname, %w = sockwrite -tn %sn
  SocketError $sockerr $event %sn
  %w GET /Home.aspx HTTP/1.1
  %w Host: www.orkut.com
  %w Accept-Charset: ISO-8859-1
  %w Cookie: orkut_state= $+ %Orkut.Cookie
  %w Connection: close
  %w
}
on *:sockread:GetSorte:{
  var %sn = $sockname, %m = $sock(%sn).mark
  SocketError $sockerr $event %sn
  sockread %a
  while ($sockbr) {

    if ( $regex(%a,/<b>Sorte\sde\shoje\s?:\s?<\/b>([^<]+)<br>/i) ) {
      set %Orkut.Sorte $remove( $regml(1), &nbsp;)
      echo -s * Sua sorte de hoje: %Orkut.Sorte
      sockclose %sn
      halt
    }
    ;Debug
    ;echo -s * %a
    sockread %a
  }
}
on *:sockclose:GetSorte:{

  if (!%Orkut.Sorte) {
    echo -s * Erro ao pegar a sua sorte de hoje. =\
  }

}

;
; Sintaxe
;   /getOrkutCookie usurio senha
;
; Descrio
;   Obtm o valor do cookie orkut_state
;
alias getOrkutCookie {
  if (!$2) { echo -s * Error: sintaxe correta /getOrkutCookie $chr(2) $+ usuario senha | return }
  if ($sock(Orkut.GET)) { echo -s * Wait: Voce ja estar realizando um processo, por favor aguarde… | return }
  unset %Orkut.*
  set %Orkut.User $replace($1,@,% $+ 40)
  set %Orkut.Pass $2
  Orkut.Open
}
alias Orkut.Open {
  var %n = Orkut.GET
  if ($sock(%n)) { sockclose %n }
  sockopen %n $+(www.,$iif($1,orkut,google),.com) 80
  sockmark %n $1
}
on *:sockopen:Orkut.GET:{
  var %sn = $sockname, %m = $sock(%sn).mark, %w = sockwrite -tn %sn
  SocketError $sockerr $event %sn
  if (%m) { %w GET /RedirLogin.aspx?auth= $+ %Orkut.Auth HTTP/1.1 | %w Host: www.orkut.com }
  else { %w GET https://www.google.com/accounts/ClientLogin?service=orkut&Email= $+ %Orkut.User $+ &Passwd= $+ %Orkut.Pass HTTP/1.1 }
  %w Connection: close
  %w
  if (%m) {
    echo -s * Recebendo o cookie…
  }
  else { echo -s * Enviando Usuario & Senha… }
}

on *:sockread:Orkut.GET:{
  var %sn = $sockname, %m = $sock(%sn).mark
  SocketError $sockerr $event %sn
  sockread %a
  while ($sockbr) {
    if (%m && $regex(%a,/^set-cookie:\sorkut_state=([^;]+)/i)) {
      unset %Orkut.*
      set %Orkut.Cookie $regml(1)
      echo -s * Cookie Pegado com sucesso. digite ‘//echo % $+ Orkut.Cookie’ para ver seu valor.
    }
    elseif ( $regex(%a,/^auth=([^\r\n]+)/i) && !%m && $regml(1)) { set %Orkut.Auth $regml(1) | Orkut.Open 1 }
    ;Debug
    ;echo -s * %a
    sockread %a
  }
  {
    goto eof
    :error
    /reseterror
    :eof
  }

}
on *:sockclose:Orkut.GET:{
  var %m = $sock(%sn).mark
  if (%m && !%Orkut.Cookie) {
    echo -s * Ocorreu algum erro ao pegar o valor do cookie orkut_state
  }
  elseif (!%m && !%Orkut.auth && !%Orkut.Cookie) {
    echo -s * Usurio/Senha invlido, ou erro no servidor.
  }
}
alias SocketError {
  ;SocketError $sockerr $event %sn
  if ($1) {
    echo -s +ERR ( $+ $2 $+ )[ $+ $1 $+ ] em $3
    return haltdef
  }
}

Espero ter ajudado muitos.

Erros? Dúvidas? Sugestões? Deixa no comentário!


Leia Também:




13 Comentários

  1. como faço pra exclui o cookei

  2. diogo padilha Diz:

    como fazer para exclui o cookei???

  3. nao consigo entrar no meu orkut ja fazem dois dias, oque tenho que fazer

  4. ja fazem dois dias que tento entrar no meu orkut e nao consigo, oque tenho que fazer….

  5. FLAVIA LONGO ZAMUNER Diz:

    como faço para excluir o cookie?
    por que nao consigo entar no meu orkut ha de 4 dias, o que faço?

  6. Toda vez que tento entrar no meu orkut… ao colocar usuario e senha, aparece uma mensagem de cookie desativado, mas pesquisei e percebi que não tem cookie nehum no meu pc, acho que deletei sem querer!!! Como faço pra adquirir esse cookies nevamente???? Por favor me ajudem!

  7. ja fazem dois dias que tento entrar no meu orkut e nao consigo, o que tenho que fazer….

  8. veronice correia Diz:

    Ja fazem 5 dias que tento entrar no meu orkut e ñ consigo, o que tenho que fazer?

  9. Rosiane Ferreira Pimentel Diz:

    não consigo entrar no orkut,e também não consigo acessar meu gmail,por que? eu preciso com urgencia.

  10. não estou conseguindo entrar no meu orkut, aparece uma msg de erro como posso solucionar esse problema?

  11. Gilson Maluko Diz:

    Pessoal, milhões de desculpas por demorar a responder.

    Então vamos ao que importa:

    Diogo: O cookie auto se deleta ao termino do script.

    Patricia Gonçalves: Qual erro que ocorre quando tenta entrar?

    Flávia Longo: Esse script não interfere em nada, ao menos que tenha feito alguns request’s repitidamente em pouco tempo.

    Daniela: Veja as configurações do seu navegador e tente logar denovo no orkut normalmente. apos fazer isso entre em contato novamente. ^^

    Leide, Veronice, Gabriela, Rosiane: Tente ser mais detalhista, tente falar sobre os possiveis erros e mensagens que aparece quando tenta entrar no orkut.

  12. Oi!
    Estou com um serio problema!nao consigo assessar meu orkut! empre que tento me logar aparece uma menssagem de erro disendo que meu kookie esta desativado! ja nao sei o que fasso! ja mudei as configurassoes do meu navegador e nada da geito!sempre aquela menssagem sinistra aparece me atormentando!pesso ajuda urgente ja que estou a mais de duas semanas sem entrar.

    grato!

  13. Vlw Rapz!

    Visitem: http://www.galerarox.net

Faça seu Comentário