PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: разобрать готовый код
vsll
Отправлено: 13 Апреля, 2011 - 17:10:13
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Источник: http://forum[dot]asechka[dot]ru/showthread.php?t=6060

блуждая по просторам интернета нашла этот код, который показался мне наиболее компактным, удобным и понятным, на работоспособность ещё не проверяла, и конечно встаёт вопрос о безопасности (кстати почему spellchecker против слова "встаёт", три раза проверила, вроде ошибки нет, или я уже русский забыла?)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //полный путь ко второму скрипту
  3. $webpage = "http://your_server/some/path/detect.php";
  4.  
  5. //таймаут для коннекта к проксику
  6. $timeout = 10;
  7.  
  8. $head="GET $webpage HTTP/1.1\r\n\r\n";
  9. //proxy.txt - файл с проксиками
  10. $fcontents = file ('proxy.txt');
  11.  
  12. while (list ($line_num, $line) = each ($fcontents)) {
  13.     echo $line_num.") Проверка <b>$line</b>.......";
  14.     $server = explode(":",trim($line));
  15.     $fp = @fsockopen($server[0], $server[1], $errno, $errstr, $timeout);
  16.     if($fp) {
  17.         unset($result);
  18.         fputs($fp,$head);
  19.         while(!feof($fp)) {
  20.            $returndata.=fread($fp,1024);
  21.         }
  22.         $result = explode("|||",$returndata);
  23.         echo "Прокси живой";
  24.         if (trim($result[1])=="") {
  25.           echo "и анонимный... \n\n";
  26.         } else {
  27.          echo "но не анонимный...\n\n";
  28.         }
  29.         fclose($fp);
  30.    } else {
  31.       echo "(".$errno.") ".$errstr."\n\n";
  32.    }
  33. }
  34. ?>

detect.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo $_SERVER['REMOTE_ADDR']."|||".$_SERVER['HTTP_X_FORWARDED_FOR']."|||";
  3. ?>


а именно не могу осмыслить эту строчку:
PHP:
скопировать код в буфер обмена
  1. $head="GET $webpage HTTP/1.1\r\n\r\n";
расшифруйте пожалуйста, кто понял
 
 Top
Мелкий Супермодератор
Отправлено: 13 Апреля, 2011 - 17:15:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11900
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 615 раз(а)




Vasiliya пишет:
а именно не могу осмыслить эту строчку:

HTTP протокол в голом виде.


-----
PostgreSQL DBA
 
 Top
vsll
Отправлено: 13 Апреля, 2011 - 17:17:27
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




а это что:\r\n\r\n
 
 Top
Мелкий Супермодератор
Отправлено: 13 Апреля, 2011 - 17:26:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 11900
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 615 раз(а)




\r\n - перевод строки. (именной такой используется в HTTP, как и windows)
протокол состоит из заголовков, каждый из которых завершается \r\n.
Между заголовками и телом документа всегда расположена пустая строка. Так и получается, что для отправки единственного заголовка в конце получается 2 конца строки - один непосредственно заголовка, а другой - метка окончания заголовков.


-----
PostgreSQL DBA
 
 Top
vsll
Отправлено: 13 Апреля, 2011 - 17:33:07
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Мелкий спасибо, здесь по этому поводу такая жуть написана:
http://forum[dot]dklab[dot]ru/viewtopic.php?t=11170
что я просто потерялась, как же правильно писать чтоб перенос строки был и в windows и в *nix?
 
 Top
EuGen Администратор
Отправлено: 13 Апреля, 2011 - 17:40:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Об этом не Вам заботиться, можете оставить как есть (все-таки запрос Вы серверу отсылаете)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 13 Апреля, 2011 - 17:40:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11900
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 615 раз(а)




Vasiliya пишет:
как же правильно писать чтоб перенос строки был и в windows и в *nix?

На самом деле, всё ещё веселее:
win - \r\n
*nix - \n
Mac - \r
Поэтому вопрос корректного переноса строк довольно интересный Подмигивание

Но в HTTP именно \r\n, без разницы для какой ОС.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 13 Апреля, 2011 - 17:41:51
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Да, кстати, а что именно в плане безопасности Вас интересует в этом коде?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 13 Апреля, 2011 - 17:43:56
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




так вот это именно и насторожило, я не подвешу сервак-то )))) а то выгонят с хостинга )))
 
 Top
EuGen Администратор
Отправлено: 13 Апреля, 2011 - 17:47:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Не думаю. В крайнем случае можете сделать sleep на наждые 100-1000 и т.п. итераций


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 13 Апреля, 2011 - 17:51:15
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




EuGen пишет:
сделать sleep на наждые 100-1000 и т.п. итераций
ох, мне бы это сделать, зря я вообще связалась с этими прокси...
 
 Top
EuGen Администратор
Отправлено: 13 Апреля, 2011 - 18:00:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $iIterationsMax=1000;
  3. $iSleepTime=2;
  4. $iCurrent=0;
  5. while (list ($line_num, $line) = each ($fcontents)) {
  6.     $iCurrent++;
  7.     echo $line_num.") Проверка <b>$line</b>.......";
  8.     $server = explode(":",trim($line));
  9.     $fp = @fsockopen($server[0], $server[1], $errno, $errstr, $timeout);
  10.     if($fp) {
  11.         unset($result);
  12.         fputs($fp,$head);
  13.         while(!feof($fp)) {
  14.            $returndata.=fread($fp,1024);
  15.         }
  16.         $result = explode("|||",$returndata);
  17.         echo "Прокси живой";
  18.         if (trim($result[1])=="") {
  19.           echo "и анонимный... \n\n";
  20.         } else {
  21.          echo "но не анонимный...\n\n";
  22.         }
  23.         fclose($fp);
  24.    } else {
  25.       echo "(".$errno.") ".$errstr."\n\n";
  26.    }
  27.    if(!$iCurrent%$iIterationsMax)
  28.    {
  29.       sleep($iSleepTime);
  30.    }
  31. }
  32.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 13 Апреля, 2011 - 18:03:28
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




EuGen спасибо, вот так на душе намного спокойней
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB