Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Эмуляция работы браузера
 
 автор: Shorr Kan   (10.05.2005 в 18:30)   письмо автору
 
 

Мне нужно сэмулировать человека скриптом. Скрипт подключается к серверу, но взаимодействовать с ним не может - сервер должен послать куки "человеку", а потом считать их. Я правильно понял, что такое возможно на CURL ?

   
 
 автор: sata   (10.05.2005 в 18:41)   письмо автору
 
   для: Shorr Kan   (10.05.2005 в 18:30)
 

Что решил счётчики накручивать :)

   
 
 автор: Artem S.   (10.05.2005 в 19:19)   письмо автору
 
   для: Shorr Kan   (10.05.2005 в 18:30)
 

А в чем проблема сделать это на php?
Алгоритм может быть следующим.
1. Запрашиваем страницу (получаем заголовки)
2. Вырезаем set-cookie: (куки)
3. Запрашиваем страницу еще раз, но в этот раз передаем cookie: (куки)

Сейчас накатаю примерный скрипт.
---- [ Добавлено ] -----
А куки вам известны? Тогда еще проще

   
 
 автор: Shorr Kan   (10.05.2005 в 19:49)   письмо автору
 
   для: Artem S.   (10.05.2005 в 19:19)
 

Нет-нет. Куки неизвестны :)
Редирект многоэтажный. Подключаюсь через прокси... и вот дальше остановка. Я так понимаю, что из-за куков, потому что остальное вроде все есть... Хотя... Но то что я перечитал - выходит что curl.

   
 
 автор: Artem S.   (10.05.2005 в 19:55)   письмо автору
 
   для: Shorr Kan   (10.05.2005 в 19:49)
 

вот скрипт.

<?
$hostname 
"www.host.ru";
$path "/path/toscript.php?id=1";
// Заходим первый раз
$fp fsockopen($hostname"80") or dir("can't connect");
$out "GET $path HTTP/1.0\r\n";
$out .= "Host: $hostname\r\n";
$out .= "Connection: Close\r\n";
$out .= "\r\n";
fwrite($fp$out);
$buffer fread($fp2048);
fclose($fp);

// Находим переданные нам куки
preg_match_all("/Set-Cookie: ([^=]+)=([^;]+);/"$buffer$matches);

$size sizeof(@$matches[0]);
$cookie null;
for(
$i 0$i $size$i++)
{
    if( !
is_null($cookie) )
        
$cookie .= "&";
    
$cookie .= $matches[1][$i] . "=" $matches[2][$i];
}

$buffer null;
// Заходим второй раз... и посылаем заголовок cookie:
$fp fsockopen($hostname"80") or dir("can't connect");
$out "GET $path HTTP/1.0\r\n";
$out .= "Host: $hostname\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cookie: $cookie\r\n";
$out .= "\r\n";
fwrite($fp$out);
while ( !
feof($fp) )
    
$buffer .= fread($fp2048);
fclose($fp);
?>

>> Редирект многоэтажный
Ну, тогда необходимо читать заголовки их расшифровывать... Задача вполне решаемая.

   
 
 автор: Shorr Kan   (10.05.2005 в 22:39)   письмо автору
 
   для: Artem S.   (10.05.2005 в 19:55)
 

Отчего может выводится что-то вроде


‹н]щwЪШ’юЩю+ФјЫ=cђШ!6даЭ/Ю!Йл7gЖG XHґ$l“Йлї}ѕє‹ђДb§;ќдх?“'$ЭэЦ-UХ­ыХо0
№нхЭЎ­[ш9‘k·ГсфAl%ЇЬШчЋэ*КUа?¶ІпЏЖzа„ѕ§и‘r'лnПЩ»*П·ѕ{~Шл(
ќуГVОІC3pЖ‘г{9eятўwxСkеx¶"«S±ЎТь‘ў›Ѓ†J4ґ•¶ЎићҐhVњ6Ќa‰}$ УчВЙИВdsРnГоыЁeкO
Л6ЛV"_1&У\єЌwцфБ¬0С@С°mЮ°mЩNQч¶Ђшioчm=љv—}Тл]еЇЯќѕoеРАИцў|4Ы‰Z"ы1Riиw
sЁЎµ&Q?Я 2T1†oMc°п»~РКэ­П>9ЕµыС№ Ї•УrК€э|p¬h?ёЪО'±‘?N$ї?sј;
”ЦД‡•Ж/5­\n6sЉћѕnЇЇпТМѓЫК…СФµГЎmG(эiеX7Мг7 м~+7ЊўсkUuFѓB8фЗcЗ0bjhЄЧP­и–•Q ,*єъ
ЛfЯ—ю”ў-S»ѕ¦( oцНбY+Ч=№јйнїл)§ рњrrsxґrъъЅ’P‹ьБdЇЇнтUўёє7?и кGэ^з7‘'Нй+[?


? Вместо сайта....

   
 
 автор: Artem S.   (11.05.2005 в 07:20)   письмо автору
 
   для: Shorr Kan   (10.05.2005 в 22:39)
 

Проблема в кодировке.

   
 
 автор: Shorr Kan   (12.05.2005 в 02:34)   письмо автору
 
   для: Artem S.   (11.05.2005 в 07:20)
 

Этот же сайт, открывающийся напрямую - отображается нормально.

   
 
 автор: Artem S.   (12.05.2005 в 07:37)   письмо автору
 
   для: Shorr Kan   (12.05.2005 в 02:34)
 

Если бы вы представили на конкретном примере что нужно, тогда возможно я бы смог вам помочь. О каком хосте идет речь?

   
 
 автор: Shorr Kan   (12.05.2005 в 16:38)   письмо автору
 
   для: Artem S.   (12.05.2005 в 07:37)
 

Это довольно трудно - как я понял - хост динамический. Выражается в айпи адресе, и всегда разном. Ну например - http://66.230.164.30/go.php

Ситуация такова - человек кликает по ссылке, и идет сперва на один хост, с длиннейшим query-запросом (после go.php), там обрабатывается о нем информация, человек идет на другой хост, тоже динамический, и тоже с длинным запросом. И уже оттуда человек попадает на какой-то сайт. Все что я смог приметь - это заголовок set cookie на одном из промежуточных серверов. Логика моя какая - послать всю нужную информацию на первый динамический, получить ответ, и, возможно, куки... по Location перейти дальше, использовав куки... и там - тоже дальше.

Вот пока я вам это писал - подумал, а может быть не всегда куки приходят? И тогда я на второй динамический хост посылаю заголовок cookie, который пуст? И на это он так реагирует, такой абракадаброй?

   
 
 автор: alex_soe   (24.07.2005 в 12:18)   письмо автору
 
   для: Artem S.   (10.05.2005 в 19:55)
 

а как при первом обращении послать Логин и Пароль?

   
 
 автор: Artem S.   (24.07.2005 в 21:10)   письмо автору
 
   для: alex_soe   (24.07.2005 в 12:18)
 

Об чем речь?
Не понял чет я ничего.

   
 
 автор: cheops   (24.07.2005 в 21:54)   письмо автору
 
   для: alex_soe   (24.07.2005 в 12:18)
 

Присоединяюсь к вопросу... нужно бы побольше подробностей...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования