-Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в web_development

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 09.03.2005
Записей:
Комментариев:
Написано: 418


Опять гугл

+ в цитатник

Cообщение скрыто для удобства комментирования.
Прочитать сообщение


непобедимый   обратиться по имени Четверг, 15 Сентября 2005 г. 17:21 (ссылка)
fclose($fs); // это ты уже и закрыл соединение.
Снова присоединиться - открываешь сокет по-новой.
$fs=fsockopen('www.google.com',80);
и дальше шлешь новый запрос по аналогичной схеме как у тебя в коде.

По коду есть вопрос - зачем так "Host:search.rambler.ru\r\n" хост прописываешь? Не www.google.com ли там надо указывать?
Еще есть большое подозрение, что пробелы стоит ставить в хедерах после двоеточия. По крайней мере в RFC это рекомендуют ;)
Ответить С цитатой В цитатник
zheleznodorzhnik   обратиться по имени Четверг, 15 Сентября 2005 г. 17:38 (ссылка)
Да все, правильно, нужно указывать www.google.com. Пробелы проставлю. Когда второй раз соединяюсь с гуглой запрос на отсыл куков как должен примерно выгледеть? что то вроде:
$get="GET http://www.google.ru/search?hl=ru&ie=WINDOWS1251&oe=WINDOWS1251&q=".urlencode($q)."&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru".$ret[0]." HTTP/1.0\r\n".
"Accept: */*\r\n".
"Accept-Language: ru\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)\r\n".
"Host:search.rambler.ru\r\n".
"Connection: Keep-Alive\r\n".
"\r\n";
fputs($fs,$get);
Или нужно в отдельно строке явно указывать имя переменной и значение куки?
Ответить С цитатой В цитатник
zheleznodorzhnik   обратиться по имени Четверг, 15 Сентября 2005 г. 17:55 (ссылка)
Все нашел, решение. Выкладываю, вдруг кому еще пригодится
Самого парсера здесь нет, только обход защиты. Гугл выдает код идентичный тому, который выводит в браузер обычного пользователя.
Ответить С цитатой В цитатник
zheleznodorzhnik   обратиться по имени Четверг, 15 Сентября 2005 г. 17:56 (ссылка)
$hostname = "www.google.ru";
$path = "/search?hl=ru&q=host&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=lang_ru";
// Заходим первый раз
$fp = fsockopen($hostname, "80") or dir("can't connect");
$out = "GET $path HTTP/1.0\r\n";
$out .="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)\r\n";
$out .= "Host: $hostname\r\n";
$out .= "Connection: Close\r\n";
$out .= "\r\n";
fwrite($fp, $out);
$buffer = fread($fp, 2048);
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];


}
$cookie .= "expires=Sun";
print $cookie;
$buffer = null;
// Заходим второй раз... и посылаем заголовок cookie:
$fp = fsockopen($hostname, "80") or dir("can't connect");
$out = "GET $path HTTP/1.0\r\n";
$out .="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)\r\n";
$out .= "Host: $hostname\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cookie: $cookie\r\n";
$out .= "\r\n";
if(!isset($fp))
exit;
fwrite($fp, $out);
while ( !feof($fp) )
$buffer .= fread($fp, 2048);
print $buffer;
fclose($fp);
Ответить С цитатой В цитатник
Комментировать К дневнику Страницы: [1] [Новые]
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку