Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Определить ТИЦ ресурса [4]
Форумы портала PHP.SU » PHP » Регулярные выражения » Определить ТИЦ ресурса

Страниц (6): « 1 2 3 [4] 5 6 »
 

46. vsll - 13 Апреля, 2011 - 11:45:15 - перейти к сообщению
Цитата:
Кроме того, не вижу действия для "плохих прокси" (а есть только для "хороших", как я понял)
Этот метод предложил Champion, а я вообще плохо понимаю, что я тут делаю))) чисто интуитивно )))
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['check_proxies'])) {
  2.  
  3. $check = dbquery("SELECT proxies_id, proxies_good FROM ".DB_PROXIES." ORDER BY proxies_id");
  4. function tryProxy($proxy) { // $proxy подразумевается, что имеет вид ip:port (111.111.111.111:3128)
  5.         $ch = curl_init();
  6.         $failed = 0;   // счетчик неудачных попыток
  7.         for($i = 0; $i < 5; $i++) { // 5 раз пробуем получить тестовую страницу
  8.                 curl_setopt($ch, CURLOPT_URL, "http://ru.yahoo.com/");
  9.                 curl_setopt($ch, CURLOPT_PROXY, $proxy);
  10.                 curl_setopt($ch, CURLOPT_TIMEOUT, 3000); // ждать страницу будем не более 3 секунд
  11.                 $ss=curl_exec($ch);
  12.                 if (++$failed > 2) // если произошло более 2 неудач, заканчиваем с этим прокси. Ретурн прям тут должен быть. Ретурн false можно поставить тут
  13.                         curl_close($ch);
  14.         }
  15.         return $failed; // а тут retuen true...
  16. }
  17.  
  18. while ($row = dbarraynum($check)) {
  19.         if (tryProxy($row['proxies_good']) == 2) { // А тут просто написать if (tryProxy($row[...]))
  20.                 dbquery("INSERT INTO ".DB_PROXY_RES." (proxy_res_bad)");       
  21.                 dbquery("DELETE FROM ".DB_PROXIES."");
  22.         }
  23. }
  24.  
  25. redirect(FUSION_SELF.$aidlink);
  26. }
47. Champion - 13 Апреля, 2011 - 20:31:15 - перейти к сообщению
Ну я бы не стал хранить их в 2 таблицах. Я бы хранил в одной и:
- либо имел столбец "рабочий-нерабочий" и обновлял бы этот столбец в зависимости от последнего теста прокси;
- либо просто сохранял test_time - среднее время, за которое прокси получил страницу во время тестов (из 5 попыток). Ну а при выборки прокси для использования брал бы те, которые с удовлетворительным test_time.
EuGen пишет:
Кроме того, не вижу действия для "плохих прокси" (а есть только для "хороших", как я понял)
А я наоборот заметил перемещение прокси из хорошего в плохой)
Vasiliya пишет:
а я вообще плохо понимаю, что я тут делаю)))
Прокомментировал код в твоем сообщении
48. vsll - 14 Апреля, 2011 - 13:33:55 - перейти к сообщению
Champion у меня уже другая идея, если получится, то напишу здесь, но скорей всего не получица )))
49. Champion - 14 Апреля, 2011 - 14:22:04 - перейти к сообщению
Ну не получится, доведем до ума)
50. vsll - 14 Апреля, 2011 - 16:49:35 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $webpage = "detect.php";
  2. $timeout = 10;
  3. $head="GET $webpage HTTP/1.1\r\n\r\n";
  4.  
  5. $list = dbquery("SELECT proxies_id, proxies_good FROM ".DB_PROXIES." ORDER BY proxies_id");
  6.  
  7. while ($check = dbarray($list)) {
  8.    
  9.     echo $check['proxies_id'].") Проверка <b>".$check['proxies_good']."</b>.......";
  10.     $server = explode(":", $check['proxies_good']);
  11.     $fp = @fsockopen($server[0], $server[1], $errno, $errstr, $timeout);
  12.     if($fp) {
  13.         unset($result);
  14.         fputs($fp,$head);
  15.         while(!feof($fp)) {
  16.            $returndata = fread($fp,1024);
  17.         }
  18.         $result = explode("|||",$returndata);
  19.         echo "Прокси живой";
  20.         if (trim($result[1])=="") {
  21.           echo "и анонимный... \n\n";
  22.         } else {
  23.          echo "но не анонимный...\n\n";
  24.         }
  25.         fclose($fp);
  26.    } else {
  27.       echo "(".$errno.") ".$errstr."\n\n";
  28.    }
  29. }
  30.  


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


результат:

65) Проверка 73.167.47.197:80.......(60) Operation timed out 68) Проверка 67.192.253.140:80.......Прокси живой
Notice: Undefined offset: 1 in ...
и анонимный...

не получается проверка на анонимность
51. Champion - 14 Апреля, 2011 - 18:30:33 - перейти к сообщению
Неужели курлом не проще?)
Надо посмотреть $returndata какой приходит.
Vasiliya пишет:
echo $_SERVER['REMOTE_ADDR']."|||".$_SERVER['HTTP_X_FORWARDED_FOR'].
У меня есть подозрение, что HTTP_X_FORWARDED_FOR если будет, то будет всегда. Только для анонимных проксей он будет совпадать с адресом прокси, а для не анонимных он будет совпадать с тем адресом, который имеем мы.
Поэтому одного explode может быть мало. Нужно поискать в строке свой ip.
52. vsll - 15 Апреля, 2011 - 12:55:32 - перейти к сообщению
Champion пишет:
Неужели курлом не проще?)
только сейчас заметила, что вы там всё хорошо расписали, но в вашем методе нет проверки на анонимность, поэтому я решила попробовать этот метод, хотя здесь проверка на анонимность тоже пока не получается
53. Stierus - 15 Апреля, 2011 - 13:02:17 - перейти к сообщению
уж тыж, чего эт вы тут на 4 листа уже наобсуждали ?Улыбка
54. vsll - 15 Апреля, 2011 - 13:05:52 - перейти к сообщению
Stierus пишет:
уж тыж, чего эт вы тут на 4 листа уже наобсуждали ?
как не схватить бан от яндекса )))
55. Champion - 15 Апреля, 2011 - 13:08:24 - перейти к сообщению
Vasiliya пишет:
но в вашем методе нет проверки на анонимность
Я в самам начале его написал)
(Добавление)
Stierus пишет:
на 4 листа
А у меня 2 листа. У меня сообщений на листе больше)
56. vsll - 15 Апреля, 2011 - 13:10:13 - перейти к сообщению
Champion пишет:
Я в самам начале его написал)
в начале чего? не могу найти
Цитата:
Что-то в этой теме я не нашел, где я писал. Может быть ты еще одну создавала?) Я там точно упомянул про X_FORWARDED_FOR что и как. Точно помню ,была вторая тема!)
в этой теме точно нету, я ctrl+F всё проверила
57. Champion - 15 Апреля, 2011 - 13:11:54 - перейти к сообщению
Что-то в этой теме я не нашел, где я писал. Может быть ты еще одну создавала?) Я там точно упомянул про X_FORWARDED_FOR что и как. Точно помню ,была вторая тема!)
58. vsll - 15 Апреля, 2011 - 14:56:38 - перейти к сообщению
Champion пишет:
Поэтому одного explode может быть мало. Нужно поискать в строке свой ip.
да нет, я думаю это работает, только у меня не получается вот так вот с лёту из-под админки подключить в этот файл другой, либо из-за защиты, либо из-за того что сам алгоритм написан под работу с файлом, а не с бд, вот это, что

p.s. не могу найти, не помню что и где уже создавала
59. Stierus - 15 Апреля, 2011 - 15:07:16 - перейти к сообщению
ммм, че ж за бан такой от Яндекса, избежать которого помогает X_FORWARDED_FOR ?
60. vsll - 15 Апреля, 2011 - 15:12:57 - перейти к сообщению
Stierus пишет:
ммм, че ж за бан такой от Яндекса, избежать которого помогает X_FORWARDED_FOR ?
когда постоянно хочешь слишком много и сразу знать о мнении яндекса о проиндекированных им ресурсах )

 

Powered by ExBB FM 1.0 RC1