Dawid Baruch

Dawid Baruch PHP & IP.Board
Developer

Temat: curl i logowanie na onet.pl

Witajcie,
mam mały problem z zalogowaniem się na onet, przy użyciu curla. Mam taki kod:
$form_action   = "https://konto.onet.pl/login.html?app_id=203";
$post_elements = array(
'login' => $this->login,
'password' => $this->password,
'perm' => 0,
'cookie' => 'onet_ubi, onetzuo_ticket, onet_cid, __utma, __utmz, onet_aui, onet_uoi, __gads, onet_crt_adtech, __utma, __utmz, __utmc, onet_sid',
'script' => rand( 2000, 3000 ),
);

$file_path = sys_get_temp_dir() . time(). "{$this->memberData[ 'member_id' ]}onet.cookie";

$curl = curl_init();

curl_setopt( $curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, false );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt( $curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_COOKIEFILE, $file_path );
curl_setopt( $curl, CURLOPT_COOKIEJAR, $file_path );

if( strtoupper( substr( PHP_OS, 0,3 ) ) == 'WIN' )
{
curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT, 30/2 );
}
else
{
curl_setopt( $curl, CURLOPT_TIMEOUT, 30 );
}

curl_setopt( $curl, CURLOPT_AUTOREFERER, TRUE );

curl_setopt( $curl, CURLOPT_URL, 'http://kontakty.onet.pl/' );
curl_setopt( $curl, CURLOPT_REFERER, '' );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_HEADER, 1 );
curl_setopt( $curl, CURLOPT_POST, false );
curl_setopt( $curl, CURLOPT_HTTPGET, true );

$result = curl_exec( $curl );

$sesid = $this->getElementString( $result, 'onet_sid=', ";" );

curl_setopt( $curl, CURLOPT_COOKIE, "onet_sid={$sesid}");


$naglowki = array(
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: pl,en-us;q=0.7,en;q=0.3',
'Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7',
'Content-Type: application/x-www-form-urlencoded'
);

curl_setopt( $curl, CURLOPT_URL, $form_action );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $naglowki );
curl_setopt( $curl, CURLOPT_ENCODING, 'gzip' );
curl_setopt( $curl, CURLOPT_ENCODING, 'deflate' );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_COOKIESESSION, 1 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $post_elements, '', '&' ) );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_AUTOREFERER, TRUE );
curl_setopt( $curl, CURLOPT_HEADER, 1 );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $curl, CURLOPT_REFERER, $form_action );
curl_setopt( $curl, CURLOPT_HTTPGET, false );
$result = curl_exec( $curl );

echo '<pre style="text-align: left;">';
var_dump($result);
echo '</pre>';exit;



ale niestety cały czas $result zwraca mi stronę logowania. Macie jakiś pomysł co może być nie tak?

konto usunięte

Temat: curl i logowanie na onet.pl

z doswiadczenia wiem, ze najczestsza przyczyna jest brak obslugi CURLOPT_FOLLOWLOCATION wynikajacy z CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set

wiec musisz podłubać w php.ini i to zmienic.

To tak na 1 rzut oka, bo kod wydaje sie w porzadku.
Dawid Baruch

Dawid Baruch PHP & IP.Board
Developer

Temat: curl i logowanie na onet.pl

Jakub Ś.:
z doswiadczenia wiem, ze najczestsza przyczyna jest brak obslugi CURLOPT_FOLLOWLOCATION wynikajacy z CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set

wiec musisz podłubać w php.ini i to zmienic.

To tak na 1 rzut oka, bo kod wydaje sie w porzadku.

Z tym raczej problemu nie ma, bo z o2 i wp się łączę bez problemowo już :) tylko onet coś mi bruździ...

konto usunięte

Temat: curl i logowanie na onet.pl

Nie wiem czemu mój wpis z kropkiem został usunięty :(.

A więc jako iż posiadasz pewne doświadczenie powiem tyle:
Znajdź w kodzie onetu "kropkę" albo inaczej "Web bug"-a.

Przykład działania:
http://artik.pl/logowanieOnet.php


Na tacy nie podam, bynajmniej nie teraz
Dawid Baruch

Dawid Baruch PHP & IP.Board
Developer

Temat: curl i logowanie na onet.pl

Sebastian Poddubiuk:
Nie wiem czemu mój wpis z kropkiem został usunięty :(.

A więc jako iż posiadasz pewne doświadczenie powiem tyle:
Znajdź w kodzie onetu "kropkę" albo inaczej "Web bug"-a.

Przykład działania:
http://artik.pl/logowanieOnet.php


Na tacy nie podam, bynajmniej nie teraz


Dzięki jak coś to możesz mi podesłać na mail spanner [at] poczta[dot]onet[dot]pl ;) albo na pw

konto usunięte

Temat: curl i logowanie na onet.pl

Przy ładowaniu strony na onecie podrzuca ona gifa 1x1 tzw. "Web bug" w którego nazwie jest "kropka".

Obrazek ten ustawia wszystkie zmienne sesji oraz cookie. Aby wszystko działało trzeba go "dociągnąć".

Obrazek ten ( w przypadku odwiedzin ze strony bez js):
<noscript><img height="1" width="1" src="/_s/kropka/4?DV=poczta%2Flogowanie%2Fpoczta_onet_pl" alt="" /></noscript>


U mnie wygląda to tak:
$curl = new curl();
$cookieName = dirname(__FILE__).'/onetCookie.txt';
$curl -> setCookie($cookieName);

$curl -> execute(array(
CURLOPT_FOLLOWLOCATION => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 30,
CURLOPT_URL => 'http://konto.onet.pl/login.html?app_id=1',
));

$curl -> execute(array(
CURLOPT_URL => 'http://konto.onet.pl/_s/kropka/4?DV=poczta%2Flogowanie%2Fpoczta_onet_pl'
));

while($curl -> respHeaders['Location'])
$curl -> execute(array(
CURLOPT_URL => $curl -> respHeaders['Location']
));

$curl ->setHttps();
$pageContent = $curl -> execute(array(
CURLOPT_POST => 1,
CURLOPT_URL => 'https://konto.onet.pl/login.html?app_id=1',
CURLOPT_POSTFIELDS => http_build_query( array(
'noscript' => 1,
'login' => 'master_mai@onet.pl',
'password' => '84ed9af2',
'perm' => '0'
), '', '&')
));

$pageContent2 = $curl -> execute(array(
CURLOPT_POST => 0,
CURLOPT_URL => 'https://kontakty.onet.pl'
));


Poradzisz sobie :))Sebastian Poddubiuk edytował(a) ten post dnia 29.11.12 o godzinie 08:15
Dawid Baruch

Dawid Baruch PHP & IP.Board
Developer

Temat: curl i logowanie na onet.pl

Sebastian dzięki, na localhoście to działa, ale jak przeniosę na serwer to się wali... widzę, że czeka mnie trochę godzin jeszcze pracy nad tym

Edit. ok. Jakiś dziwny curl jest i przy obrabianiu nagłówków gubił location kropki :/Dawid Baruch edytował(a) ten post dnia 29.11.12 o godzinie 14:20

konto usunięte

Temat: curl i logowanie na onet.pl

cUrl nie jest dziwny :), trzeba prześledzić wszystko po kolei, samo wyjdzie :).

U mnie działa bez problemów jak widać i na serwerze i localhoscie
J G

J G Programista Php,
Supremum SEO Sp. z
o.o.

Temat: curl i logowanie na onet.pl

i jak poradziłeś sobie ??
Dawid Baruch

Dawid Baruch PHP & IP.Board
Developer

Temat: curl i logowanie na onet.pl

Jan Głogowski:
i jak poradziłeś sobie ??
Tak, miałem lekkie problemy, ale wszystko się udało
Marcin Chyłek

Marcin Chyłek
projektant/programis
ta

Temat: curl i logowanie na onet.pl

Poprawiłem trochę podany przykład. Zaktualizowany działający na dziś kod tutaj:
http://straightitsolutions.blogspot.com/2015/02/how-to...

Następna dyskusja:

Logowanie Zippyshare.com - ...




Wyślij zaproszenie do