Nie wiem co jest z tym hostingiem, dlatego w akcie desperacji po drobnych bojach postanowiłem postawić Apache, teraz cURL działa. Skleciłem jakiś kod w międzyczasie (strasznie obiektowo mi to wyszło...), ale mam z nim poważne problemy. Ma działać w następujący sposób:
1.Najpierw użytkownik chcący się zalogować do obcej strony (tutaj gmail.com) uruchamia poniższy skrypt.
2.Pobierane są nagłówki z jego przeglądarki
3.Całość zostaje wysłana do serwera gmaila za pomocą skryptu, który za pomocą nagłówków podszywa się pod przeglądarkę.
4.Pobierane jest ciasteczko z serwera i wysłane do przegłądarki.
5.Przeglądarka zostaje przekierowana do strony, na której użytkownik ma dostęp do swoich wiadomości na gmailu.
Niestety, po moim dłuższym grzebaniu w kodzie nie otrzymuję nawet nagłówków przeglądarki, a Live HTTP headers wypluwa kolejno błędy: 204 No content, tak jakby nie chciała poczekać na to przekierowanie i 500 Internal Server Error. Mój kod:
<?php
function login($UserAgent, $Accept, $AcceptLanguage, $AcceptEncoding, $Connection, $ContentType $ContentLength, $continue, $service, $rm, $dsh, $ltmpl, $hl, $scc, $ss, $GALAX, $pstMsg, $dnConn, $Email, $Passwd, $signIn, $rmShown, $checkConnection, $timeStmp, $secTok){
$sendHeader=array($Host, $UserAgent, $Accept, $AcceptLanguage, $AcceptEncoding, $Connection, $Referer, $ContentType $ContentLength);
$sendField['continue']=$continue;
$sendField['service']=$service;
$sendField['rm']=$rm;
$sendField['dsh']=$dsh;
$sendField['ltmpl']=$ltmpl;
$sendField['hl']=$hl;
$sendField['scc']=$scc;
$sendField['ss']=$ss;
$sendField['GALAX']=$GALX;
$sendField['pstMsg']=$pstMsg;
$sendField['dnConn']=$dnConn;
$sendField['Email']=$Email;
$sendField['Passwd']=$Passwd;
$sendField['signIn']=$signIn;
$sendField['rmShown']=$rmShown;
$sendField['checkConnection']=$checkConnection;
$sendField['timeStmp']=$timeStmp;
$sendField['secTok']=$secTok;
$ch = curl_init('https://accounts.google.com/ServiceLoginAuth');
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie );
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_HTTPHEADER, $sendHeader);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($sendField));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);
curl_exec($ch);
}
function createPostString($sendField) {
foreach ($sendField as $key => $value) {
}
}
$Host="accounts.google.com";
$Referer="accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&hl=pl";
$cookie='cookie.txt';
$headerArray[$name]=$value;
}
print_r($headerArray); //UMIESZONE W CELACH TESTOWYCH/TYMCZASOWO. NIE WYSWIETLA NICZEGO, CZYTAJ NIE DZIALA, A JESZCZE PRZED CHWILĄ DZIALALO...
$continue=$_POST['continue'];
$service=$_POST['service'];
$rm=$_POST['rm'];
$dsh=$_POST['dsh'];
$ltmpl=$_POST['ltmpl'];
$hl=$_POST['hl'];
$scc=$_POST['scc'];
$ss=$_POST['ss'];
$GALX=$_POST['GALX'];
$pstMsg=$_POST['pstMsg'];
$dnConn=$_POST['dnConn'];
$checkConnection=$_POST['checkConnection'];
$checkDomains=$_POST['checkDomains'];
$timeStmp=$_POST['timeStmp'];
$secTok=$_POST['secTok'];
$Email=$_POST['Email'];
$Passwd=$_POST['Passwd'];
$PersistentCookie=$_POST['PersistentCookie'];
$rmShown=$_POST['rmShown'];
print_r($_POST); //UMIESZONE W CELACH TESTOWYCH/TYMCZASOWO. NIE WYSWIETLA NICZEGO, CZYTAJ NIE DZIALA, A JESZCZE PRZED CHWILĄ DZIALALO...
login($headerArray['$User-Agent'], $headerArray['Accept'], $headerArray['Accept-Language'], $headerArray['Accept-Encoding'], $headerArray['Connection'], $headerArray['Content-Type'] $headerArray['Content-Length'], $continue, $service, $rm, $dsh, $ltmpl, $hl, $scc, $ss, $GALAX, $pstMsg, $dnConn, $Email, $Passwd, $signIn, $rmShown, $checkConnection, $timeStmp, $secTok);
header('Location: <a href="https://mail.google.com/mail'%3b%29;" target="_blank">https://mail.google.com/mail');</a
>
?>
Byłbym wdzięczny, gdyby ktoś spojrzał na ten listing. Nie jestem najlepszy w PHP, wiele fragmentów skryptu są kopiami znalezionymi w sieci.