Показать сообщение отдельно

  #3  
Старый 10.03.2007, 22:35
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме:
1325772

Репутация: 517


Отправить сообщение для Talisman с помощью ICQ
По умолчанию

Цитата:
Сообщение от 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$outPREG_PATTERN_ORDER); 
  
// Выводим результаты поиска
  
for($i 0$i count($out[1]); $i ++) 
  { 
    echo 
$out[1][$i]."<br>"
  } 

  
// Функция загружающая страницу при помощи секетов
  
function get_content($hostname$path)
  { 
    
$line "";
    
// Устанавливаем соединение, имя которого
    // передано в параметре $hostname
    
$fp fsockopen($hostname80$errno$errstr30); 
    
// Проверяем успешность установки соединения
    
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($fp1024); 
      } 
      
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..