Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: HTTPS POST PHP вопрос
цитата
29/05/10 в 19:08
 FXIX
Кто знает в чем тонкий момент отправки POST-запроса на HTTPS?


$username='логин';
$password='пароль';

$data=urlencode(
"accountType=HOSTED_OR_GOOGLE
&Email=$username
&Passwd=$password
&source=CoExample
&service=blogger");

$header ='POST /accounts/ClientLogin HTTP/1.1\n';
$header.='Host: google.com\n';
$header.='Content-Type: application/x-www-form-urlencoded\n';
$header.='Content-Length: '.strlen($data).'\n\n';
$header.=$data.'\n\n';
$connect=fsockopen('ssl://www.google.com', 443, $errno, $errstr) or die ($errno.' : '.$errstr);

$out=fwrite($connect,$header);

while($in=fgets($connect,2048)) {
    echo $in;
}
fclose ($connect);


не работает. (скрипт подключается к хосту https://www.google.com/accounts/ClientLogin отдает логин\пароль\прочую хуйню и возвращает SID, LSID, Auth)
цитата
29/05/10 в 19:17
 Pentarh
curl тебе в помощь
цитата
29/05/10 в 19:43
 FXIX
Pentarh: курл само собой. Хотелось бы "в явном виде" написать.

должно быть просто:

http://code.google.com/intl/ru/apis/blogger/docs/2.0/developers_gui…lientLogin

http://code.google.com/intl/ru/apis/accounts/docs/AuthForInstalledApps.html#Request
цитата
29/05/10 в 21:05
 Pentarh
дык а че отдает то конкретно?
цитата
29/05/10 в 23:03
 FXIX
да ничего не отдает. заголовки собираются сокет создается далее на строке
while($in=fgets($connect,2048)) висяк и дебагер умирает. минуты 2 страница грузится и далее пустая страница



целый день голову ломаю, гугель тоже не нагугливается
цитата
30/05/10 в 00:53
 Cook
хочешь заняться чем то интересным так изучи протокол, и общайся сколько влезет, а не хочешь так используй curl
разницы в ПОСТе нет никакой при хттп и хттпс
цитата
30/05/10 в 01:50
 Pentarh
простокол HTTPS эмулируй тогда сам со всеми OpenSSL заморочками. Он посложнее ХТТП будет.

или .... curl тебе в помощь
цитата
30/05/10 в 11:18
 Dr.Syshalt
FXIX писал:

целый день голову ломаю, гугель тоже не нагугливается


Плохо гуглил, значит - иначе бы знал, что HTTPS - это не просто POST. Там сначала идет хэндшейкинг, обмен сертификатами. И только потом - обмен данными.

Зачем так все сложно? Думаешь, будет быстрее работать? icon_smile.gif
цитата
30/05/10 в 11:48
 lega_cobra
Dr.Syshalt писал:
Плохо гуглил, значит - иначе бы знал, что HTTPS - это не просто POST. Там сначала идет хэндшейкинг, обмен сертификатами. И только потом - обмен данными.


Там в коде есть ssl:// icon_smile.gif

TC: Попробуй tls:
цитата
30/05/10 в 13:16
 FXIX
Всем спасибо, вопрос решился. Перевод строк в формате \n работает только в двойных кавычках. Если одинарные кавычки, то юзать chr(10). Но все равно авторизоваться не смог.

Цитата:

HTTP/1.1
403 Forbidden
Content-Type: text/plain
Cache-control: no-cache, no-store
Pragma: no-cache
Expires: Mon, 01-Jan-1990 00:00:00 GMT
Date: Sun, 30 May 2010 09:28:52 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Length: 24
Server: GSE
Connection: close
Error=BadAuthentication


ну а на курле вот


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = array(
        'accountType' => 'HOSTED_OR_GOOGLE',
        'Email' => $username,
        'Passwd' => $password,
        'source'=>'PHI-cUrl-Example',
        'service'=>'blogger');

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$hasil = curl_exec($ch);
echo $hasil;
цитата
30/05/10 в 13:28
 FXIX
напиздел. удалось реализовать.

Цитата:

$data="accountType=HOSTED_OR_GOOGLE&Email=мыло&Passwd=пароль&source=PHI-cUrl-Example&service=blogger";
$header ="POST /accounts/ClientLogin HTTP/1.1\n";
$header.="Host: google.com\n";
$header.="Content-Type: application/x-www-form-urlencoded\n";
$header.='Content-Length: '.strlen($data)."\n\n";
$header.=$data."\n\n";
$connect=fsockopen('ssl://www.google.com', 443, $errno, $errstr) or die ($errno.' : '.$errstr);

$out=fputs($connect,$header);

while($in=fgets($connect,2048)) {
echo $in;
}
fclose ($connect);


Цитата:

HTTP/1.1 200 OK
Content-Type: text/plain
Cache-control: no-cache, no-store
Pragma: no-cache
Expires: Mon, 01-Jan-1990 00:00:00 GMT
Date: Sun, 30 May 2010 10:20:28 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Length: 563
Server: GSE

SID=DQAAAHYAAABXRKVoC_S3vM9vdvzwv2NlpqoMLOxK0paGAirUm_BFMFkFsRCXWUQ7nSkBuTWS49DyR4Y71jKMJpY849ZokiuKPyfb7VEqNdINQatDmxKgGp72p_OfIjoUq-5grmkCCxPTgClszozIPAxHOv6frHn4XVj-W06blVGVOq-GnxiBfQ

LSID=DQAAAHgAAABN9Pf0leawTBBEzzexaajLO-oVQ0KAhnqyI9Hy6ReubHW6StkZfGsc-xbd5ElWw7uvo-7AoaahoPWtaczmNhuiQuVSBJRx1yqFkdK42REkg7ZrbEC9fiLDx4pPy_1Wd3FsUkLZQN3G9wxBkfTf2SZSnRXe8-7I3zjFRVPso3aWyw

Auth=DQAAAHkAAABN9Pf0leawTBBEzzexaajLO-oVQ0KAhnqyI9Hy6ReubHW6StkZfGsc-xbd5ElWw7u6iDXfV4POm3fkENkWgQJ9W6DWjM8lpaMphnLVh6pKQpCduPDE0SRJbsfyid2B7UZPIb3qs5zucYCrzNmcmTQaJXhmWXp3LuAuS9tMPPHaqQ
цитата
30/05/10 в 19:24
 Noobus Boobus
Чего только люди не сделают, лишь бы стандартные средства не использовать...


Эта страница в полной версии