|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
Сообщение от vmn
Не раскрыты 3 важных вопроса:
1. Как там кукисы отсылать.
2. Как с https через php работать.
3. Как многопоточность организовать (я так понимаю curl, но возможно ошибаюсь).
Особенно второй вопрос интересует.
1.
PHP код:
$headers .= "Cookie: var1=value; var2=value \r\n";
2. через cURL, ок, щас добавлю.
3. многопоточности в ПШП НЕТ!!! только извращения с неблокировкой сокетов.
Печенька)))
начальный вариант скрипта взят из книги "Головоломки для хакера на PHP", я же изменил регулярку, скрипт теперь снова живой!!!
PHP код:
<?php
// Формируем фрагменты запроса
$hostname = "www.google.ru";
$button = "Поиск";
$query = "Форум по регулярным выражениям";
$path = "/search?hl=ru&q=".win_utf8($query)."&btnG=".win_utf8($button)."&lr=";
// Снимаем ограничение на время выполнения скрипта
set_time_limit(0);
// Вызываем функцию, которая загружает страницу
$contents = get_content($hostname, $path);
// Регулярное выражение
$pattern = '|<a href=\"([^\"]*)[^>]*>|is';
// Выполняем поиск по регулярному выражению
preg_match_all($pattern, $contents, $out, PREG_PATTERN_ORDER);
// Выводим результаты поиска
for($i = 0; $i < count($out[1]); $i ++)
{
echo $out[1][$i]."<br>";
}
// Функция загружающая страницу при помощи секетов
function get_content($hostname, $path)
{
$line = "";
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем HTTP-заголовки для передачи
// его серверу
$headers = "GET $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
// Подделываем пользовательский агент, маскируясь
// под пользователя WindowsXP
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1\r\n";
// Подделываем реферер, сообщая серверу, что мы повторно
// нажимаем кнопку "Поиск"
$headers .= "Referer: http://".$hostname.$path."\r\n";
$headers .= "Connection: Close\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
return $line;
}
// Функция преобразования текста из кодировки cp-1251 (Windows)
// в UTF-8 в формате Google
function win_utf8($str)
{
$win = array("а","б","в","г","д","е","ё","ж","з","и",
"й","к","л","м","н","о","п","р","с","т",
"у","ф","х","ц","ч","ш","щ","ъ","ы","ь",
"э","ю","я","А","Б","В","Г","Д","Е","Ё",
"Ж","З","И","Й","К","Л","М","Н","О","П",
"Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ",
"Ъ","Ы","Ь","Э","Ю","Я"," ");
$utf8 = array("%D0%B0","%D0%B1","%D0%B2","%D0%B3","%D0%B4",
"%D0%B5","%D1%91","%D0%B6","%D0%B7","%D0%B8",
"%D0%B9","%D0%BA","%D0%BB","%D0%BC","%D0%BD",
"%D0%BE","%D0%BF","%D1%80","%D1%81","%D1%82",
"%D1%83","%D1%84","%D1%85","%D1%86","%D1%87",
"%D1%88","%D1%89","%D1%8A","%D1%8B","%D1%8C",
"%D1%8D","%D1%8E","%D1%8F","%D0%90","%D0%91",
"%D0%92","%D0%93","%D0%94","%D0%95","%D0%81",
"%D0%96","%D0%97","%D0%98","%D0%99","%D0%9A",
"%D0%9B","%D0%9C","%D0%9D","%D0%9E","%D0%9F",
"%D0%A0","%D0%A1","%D0%A2","%D0%A3","%D0%A4",
"%D0%A5","%D0%A6","%D0%A7","%D0%A8","%D0%A9",
"%D0%AA","%D0%AB","%D0%AC","%D0%AD","%D0%AE",
"%D0%AF","+");
return str_replace($win, $utf8, $str);
}
?>
ЗЫ он вырывает ссылки с гугла... гугла хак на автомате так сказать)
Последний раз редактировалось Talisman; 11.03.2007 в 02:12..
|