PDA

Просмотр полной версии : Запрос на сайт


Buffalon
02.12.2008, 01:52
Короче тут описан пост запрос на сайт www.weblancer.net/
Но он вообще никак не реагирует(
Что не хватает???Или кук нехватает как их прикрепить???

<?
set_time_limit(100);
function Post($server,$url,$post)
{
$q="POST $url HTTP/1.1\r\n".
"Host: $server\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n".
'Accept:text/html, image/jpeg, image/png, text/*, image/*, */*'."\r\n".
"Accept-Encoding: x-gzip, x-deflate, gzip\r\n".
"Accept-Charset: windows-1251, utf-8;q=0.5, *; q=0.5\r\n".
"Accept-Language:ru, en\r\n".
"Keep-Alive: 300\r\n".
"Proxy-Connection: keep-alive\r\n".
"Referer: $server \r\n".
//
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($post)."\r\n".
"\r\n".
"$post\r\n";
$s=fsockopen($server,80);
fputs($s,$q);
while (!feof($s)) $page.=fgets($s);
fclose($s);
return $page;
}
echo Post('91.196.0.75','http://www.weblancer.net/','login=Buffalon&password=xXx');

?>

Сама функция работает отлично .Проверял у себя на локалхосте , а вот тут я забыл что то в пост указать?

Gifts
02.12.2008, 02:01
Ммм, каг бе у меня скрипт работает, во всяком случае ответ есть. Мб у тя заблокированы сокеты на хостинге?

DIAgen
02.12.2008, 02:04
Используй Curl (http://www.php.net/manual/ru/book.curl.php) , на много проще, чем возиться с зоголовками, и зачем у тебя set_time_limit(100); , что запрос к серваку и отдача от него будет идти почти 2 менуты.

В CURL для установки кукисов используй CURLOPT_COOKIE а для работы с проксиком CURLOPT_PROXY

Buffalon
02.12.2008, 02:04
Ммм, каг бе у меня скрипт работает, во всяком случае ответ есть. Мб у тя заблокированы сокеты на хостинге?
Да ответ есть , вопрос в том что не могу залогинеться , если даже логин не верный то он должен выдавать другой текст типа пароль не верен.А у меня вообще ничего не передаёт .Какой Пост я забыл указать?

DIAgen
02.12.2008, 02:05
И еще поставь в начало error_reporting(7); и посмотри что выдасть скрипт

Buffalon
02.12.2008, 02:09
set_time_limit(100); У меня GRPS :D
ВСегда хотел узнать что такое Курл да времени не хватало , а сейчас пишу скрипт - как раз самое время - говорят не сложно разобраться , а можно плмз пример с КУРЛ?

DIAgen
02.12.2008, 02:11
set_time_limit(100); У меня GRPS :D
ВСегда хотел узнать что такое Курл да времени не хватало , а сейчас пишу скрипт - как раз самое время - говорят не сложно разобраться , а можно плмз пример с КУРЛ?
Вот твоя загвозка вот тут, нужн указывать полный путь для отправки POST
http://www.weblancer.net/account/login/

Pashkela
02.12.2008, 02:16
Курлы проще, но дольше выполняются, извините

Gifts
02.12.2008, 02:16
И не хватает полей в посте

action=login&return_url=%2F&login=Buffalon&password=xXx&x=15&y=6

приблизительно так

Buffalon
02.12.2008, 02:19
Gifts прав .А откуда ты их нарыл???Я искал не нашёл ничего ... .Gifts + , УЧУ Курлы , всем спс

DIAgen
02.12.2008, 02:20
а можно плмз пример с КУРЛ?
Вот держи


$handle = curl_init();

curl_setopt($handle, CURLOPT_COOKIE, 'remixlang=0;');
curl_setopt($handle, CURLOPT_PROXY, '91.196.0.75:80');
curl_setopt($handle, CURLOPT_VERBOSE, false);
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_REFERER, 'http://www.weblancer.net/');
curl_setopt($handle, CURLOPT_URL, 'http://www.weblancer.net/account/login/');
curl_setopt($handle, CURLOPT_USERAGENT, 'User-Agent: Mozilla/6.0 (Windows; U; Windows NT 6.1; ru; rv:2.9.0.4) Gecko/2009102920 Firefox/3.1.4');
curl_setopt($handle, CURLINFO_HEADER_OUT, true);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, 'action=login&login=Buffalon&password=xXx');

echo $response = iconv('windows-1251', 'UTF-8', curl_exec($handle));
//echo $response = curl_exec($handle); // У меня просто все на UTF8

curl_close($handle);

Ответ сервера:
Авторизация пользователя Неверно указан пароль. Число оставшихся попыток — 3. При превышении лимита возможность авторизации будет доступна через час.

Buffalon
02.12.2008, 02:23
Вот держи


$handle = curl_init();

curl_setopt($handle, CURLOPT_COOKIE, 'remixlang=0;');
curl_setopt($handle, CURLOPT_PROXY, '91.196.0.75:80');
curl_setopt($handle, CURLOPT_VERBOSE, false);
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_REFERER, 'http://www.weblancer.net/');
curl_setopt($handle, CURLOPT_URL, 'http://www.weblancer.net/account/login/');
curl_setopt($handle, CURLOPT_USERAGENT, 'User-Agent: Mozilla/6.0 (Windows; U; Windows NT 6.1; ru; rv:2.9.0.4) Gecko/2009102920 Firefox/3.1.4');
curl_setopt($handle, CURLINFO_HEADER_OUT, true);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, 'action=login&login=Buffalon&password=xXx');

echo $response = iconv('windows-1251', 'UTF-8', curl_exec($handle));
//echo $response = curl_exec($handle); // У меня просто все на UTF8

curl_close($handle);

Ответ сервера:


Чёрт - реально проще , спс .Учу КУРЛ

DIAgen
02.12.2008, 02:28
Курлы проще, но дольше выполняются, извините
Можешь привести тесты или статью где это описано что медленей?
fsockopen ты на прямую просто работаешь с сокетами, а Curl уже все сделано и не надо заморачиваться, но даже если Curl меделение fsockopen, то Curl выигрывает в том что можно использовать curl_multi

DIAgen
02.12.2008, 02:29
Чёрт - реально проще , спс .Учу КУРЛ
Учить не чего не надо, надо просто читать документацию и понимать что делаеться и как, а остальное в голове само сабой заложеться (:

Pashkela
02.12.2008, 02:38
Можешь привести тесты или статью где это описано что медленей?


http://habrahabr.ru/blogs/php/42158/

))) Мда, чото я сегодня не в форме. Сорри

ЗЫЖ Даже больше - когда fsockopen отключен на сайте, curl практически всегда работает. Вот это сел в лужу:) Ставьте мне минусы быро

DIAgen
02.12.2008, 02:52
http://habrahabr.ru/blogs/php/42158/

))) Мда, чото я сегодня не в форме. Сорри

ЗЫЖ Даже больше - когда fsockopen отключен на сайте, curl практически всегда работает. Вот это сел в лужу:) Ставьте мне минусы быро
Ставить не чего не будем (:

Но у Curla есть не большой не достаток, он заключает в том чно не может работать с патоком даных, если я правильно выразился, т.е если использовать протокол SMTP то уж тут не как не обойтись без Socket Functions

Pashkela
02.12.2008, 02:57
delete

DIAgen
02.12.2008, 03:03
Если речь идет о https, то кажется я понял
Неа.. не правильно понял
SMTP - Simple Mail Transfer Protocol. Простой Протокол Передачи Почты.
Там отправялеться запрос на подключение и читаем ответ и если ответ 220, то отправляем запрос приветсвия EHLO и все это идет в одном соедение.
Вот не большой пример
$socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP ) ;
socket_connect ( $socket, $domen_mx, 25 ) ;
$tmp_soket = socket_read ( $socket, 512 ) ;
if (substr ( $tmp_soket, 0, 3 ) !== '220') {
return false ;
}
socket_write ( $socket, "EHLO {$domain}\n" ) ;
$tmp_soket = socket_read ( $socket, 512 ) ;
if (substr ( $tmp_soket, 0, 3 ) !== '250') {
return false ;
}

PHPoozy
02.12.2008, 03:05
EHLO ))))

PHPoozy
02.12.2008, 03:06
жошшш

PHPoozy
02.12.2008, 03:07
:D AAAAAAAAAAAAAAAAAAAA =))))

b3
02.12.2008, 03:10
В настоящее время libcurl поддерживает протоколы http, https, ftp, gopher, telnet, dict, file, и ldap. (с) php.net

Сокеты - все остальное (как понял я)

Pashkela
02.12.2008, 03:13
EHLO ))))

ESMTP — расширяемый протокол, в отличие от SMTP. При установлении соединения сервер объявляет о наборе поддерживаемых расширений (в качестве ответа на команду EHLO). Соответствующие расширения могут быть использованы клиентом при работе. Необходимо помнить, что если сессия начинается с команды HELO (используемой в «классическом» SMTP, RFC 821), то список расширений выводиться не будет.

http://ru.wikipedia.org/wiki/SMTP

PHPoozy
02.12.2008, 03:19
ради такой х*йни посылать ехло этож надо так...

FeoЩту
02.12.2008, 10:37
В настоящее время libcurl поддерживает протоколы http, https, ftp, gopher, telnet, dict, file, и ldap. (с) php.net

Сокеты - все остальное (как понял я)
curl - надстройка над сокетами

DIAgen
02.12.2008, 10:39
ради такой х*йни посылать ехло этож надо так...
Я писал этот скрипт для авторизации на gmail, ты попробуй авторизоваться отсылая HELO.

И HELO был в первой версии протокола, в последующих рекомундуеться использовать EHLO.

P.S. почитай спецификацию протолов (:

DIAgen
02.12.2008, 10:41
curl - надстройка над сокетами
Можно сказать так, Curl - это на подобии фреймворка для работы с сокетами (:

vikseriq
02.12.2008, 23:31
Кста, раз про курл. На чем курляндию пустить на локале? Денвер тупит, АппСерт, ТопСерв, Юниформ и ХАМПП тоже. Что делать? Именно надо под виндами, на никсы не гнать )

Chaak
02.12.2008, 23:37
Кста, раз про курл. На чем курляндию пустить на локале? Денвер тупит, АппСерт, ТопСерв, Юниформ и ХАМПП тоже. Что делать? Именно надо под виндами, на никсы не гнать )
Последний вариант: http://wampserver.com

Потом в трее левой кнопкой мыши -> PHP -> php_curl

vikseriq
02.12.2008, 23:43
Снова Чакусу thnk )

rushter
03.12.2008, 00:03
http://forum.antichat.ru/thread79123.html
http://ru2.php.net/manual/ru/book.curl.php
вот за 15минут научишься