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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определить ТИЦ ресурса [6]

 PHP.SU

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


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

> Описание: вытащить из xml
vsll
Отправлено: 15 Апреля, 2011 - 16:30:37
Post Id


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


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


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




Champion пишет:
Это скрипт, в котором выводится x_forwarded_for?
да,
Цитата:
http://forum.php.su/topic.php?fo...83396#1302283396 тут ведь всё написано

поняла
 
 Top
Stierus Супермодератор
Отправлено: 15 Апреля, 2011 - 16:34:50
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




алгоритм:

1. Создать файл tets.php который выводить
PHP:
скопировать код в буфер обмена
  1. <?PHP echo ($_SERVER['X_FORWARDED_FOR']? $_SERVER['X_FORWARDED_FOR'] : 'none'); ?>

2. В другом файле запросом вытащить инфу о проксиках
3. Написать ф-ю checkproxy, которая будет курлом через указанный проксик запрашивать страницу tets.php, смотреть на ответ ... если в ответе none- значит проксик анонимный, если нет - значит нет
4. В цикле для кадого проксика запустить ф-ю checkproxy(...)
5. ...
 
My status
 Top
vsll
Отправлено: 15 Апреля, 2011 - 16:37:20
Post Id


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


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


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




Stierus спасибо Champion это мне и описал здесь http://forum.php.su/topic.php?fo...83396#1302283396
(Добавление)
Вообще не работает:
PHP:
скопировать код в буфер обмена
  1. $check = dbquery("SELECT proxies_id, proxies_good FROM ".DB_PROXIES." ORDER BY proxies_id");
  2.  
  3. function tryProxy($proxy) {
  4.         $ch = curl_init();
  5.         $failed = 0;  
  6.         for($i = 0; $i < 5; $i++) {
  7.                 curl_setopt($ch, CURLOPT_URL, "http://ru.yahoo.com/");
  8.                 curl_setopt($ch, CURLOPT_PROXY, $proxy);
  9.                 curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
  10.                 $ss=curl_exec($ch);
  11.                 if (++$failed > 2) return false;
  12.                 curl_close($ch);
  13.         }
  14.         return true;
  15. }
  16.  
  17. while ($row = dbarraynum($check)) {
  18.         if (tryProxy($row['proxies_good'])) {
  19.                 dbquery("INSERT INTO ".DB_PROXY_RES." (proxy_res_bad)");      
  20.                 dbquery("DELETE FROM ".DB_PROXIES."");
  21.         }

Warning: curl_setopt(): 32 is not a valid cURL handle resource in (9раз)
потом yahoo news на кракозябном языке на полстраницы с чьими-то фотографиями, на одной из которой Медведев
потом опять
Warning: curl_setopt(): 33 is not a valid cURL handle resource in (9раз)
 
 Top
Champion Супермодератор
Отправлено: 15 Апреля, 2011 - 17:30:36
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




curl_close($ch) надо сделать после цикла, а не в цикле
(Добавление)
С помощью яху, кстати, анонимность не проверится так просто.
Вот: http://www[dot]whois-service[dot]ru/lookup/на этой странице выводится твой ip адрес.
Тебе надо проверить в скрипте, что $ss не пустое (значит прокси рабочий) и strpos($ss, свой ip) - если не найдется, то анонимный
 
 Top
vsll
Отправлено: 15 Апреля, 2011 - 17:58:45
Post Id


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


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


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




тут до анонимности ещё далеко, зачем он мне весь yahoo да ещё и несколько раз выгружает? и оооочень долго 2 прокси проверяет на живучесть, хотя это может быть из-за ошибки передачи прокси из одной таблицы в другую
вот так же можно, чтобы ненужной информации не было?
PHP:
скопировать код в буфер обмена
  1. function tryProxy($proxy) {
  2.         $ch = curl_init();
  3.         $failed = 0;  
  4.         for($i = 0; $i < 2; $i++) {
  5.                 curl_setopt($ch, CURLOPT_URL, "http://ru.yahoo.com/");
  6.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  7.                 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.16) Gecko/20110319');
  8.                 curl_setopt($ch, CURLOPT_PROXY, $proxy);
  9.                 curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
  10.                 $ss=curl_exec($ch);
  11.                 if (++$failed > 2) return false;
  12.         }
  13.         return true;
  14.         curl_close($ch);
  15. }

дальше
MySQL server has gone awayMySQL server has gone awayMySQL server has gone awayMySQL server has gone awayMySQL server has gone away

(Отредактировано автором: 15 Апреля, 2011 - 17:59:40)

 
 Top
Champion Супермодератор
Отправлено: 15 Апреля, 2011 - 18:10:02
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Vasiliya пишет:
for($i = 0; $i < 2; $i++) {
...
(++$failed > 2)
Красная 2 должна быть не 2, а напрмиерр 5. Смысл в том, чтобы проверить прокси 5 раз. Если хотя бы 2 из них неудачные - считаем прокси плохим.
Сравни условие мое и твое. В моем есть проверка удачности полученной страницы. а в твоем просто увеличение счетчика неудачных попыток.

Vasiliya пишет:
return true;
curl_close($ch);
Выполнение чего-то после return - не самое грамотное решение.

Vasiliya, нужно просто медленно, не торопясь прочитать готовый код и вдуматься. А не выкидывать из него куски по одному в произвольном порядке. И тогда всё получится.
Если какой-то кусок кода не понятен, давай расскажу. что он делает. Не надо просто выкидывать его - в результате только получается совсем другой скрипт.
Vasiliya пишет:
MySQL server has gone away
Ну ушел он. Скоро вернется, наверное)
 
 Top
vsll
Отправлено: 15 Апреля, 2011 - 18:15:08
Post Id


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


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


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




я и с 5пробовала (кстати у меня время 5сек, это для того живого прокси достаточно)
PHP:
скопировать код в буфер обмена
  1.  
  2.         curl_close($ch);
  3.         return true;
  4.  

так тоже делала, ничего я не выкидывала, просто не могу понять есть тут какой-то результат или нет, если в предыдущем скрипте всё выводится errno то здесь вообще ничего не понятно
 
 Top
vsll
Отправлено: 16 Апреля, 2011 - 18:59:28
Post Id


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


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


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




с сетевыми потоками на анонимность так и не сложилось, в итоге вот такая смесь бульдога с носорогом получилась:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['exit'])) { redirect(FUSION_SELF.$aidlink); }
  2.  
  3. function get_contents($proxy) {
  4.         $ch = curl_init();  
  5.         curl_setopt($ch, CURLOPT_URL, "http://www.yourdomen/detect.php");
  6.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  7.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.16) Gecko/20110319');
  8.         curl_setopt($ch, CURLOPT_PROXY, $proxy);
  9.         $ss=curl_exec($ch);
  10.         curl_close($ch);
  11.         return $ss;
  12. }
  13.  
  14. if (isset($_POST['check_anonymity'])) {
  15.  
  16. $all = dbquery("SELECT proxies_id, proxies_good FROM ".DB_PROXIES." ORDER BY proxies_id");
  17.  
  18. while ($choice = dbarray($all)) {
  19.    
  20.    echo $choice['proxies_id'].") Checking <b>".$choice['proxies_good']."</b>.......";
  21.    $result = explode("|||",get_contents($choice['proxies_good']));
  22.    var_dump ($result);
  23.    if(!empty($result[0]) && trim($result[1])=="") {
  24.    echo $locale['613'];
  25.    } else {
  26.    dbquery("INSERT INTO ".DB_PROXY_RES." (proxy_res_bad) SELECT proxies_good FROM ".DB_PROXIES." WHERE proxies_id = '".$choice['proxies_id']."'");      
  27.    dbquery("DELETE FROM ".DB_PROXIES." WHERE proxies_id = '".$choice['proxies_id']."'");
  28.    }
  29. }
  30. echo "<form name='exit' method='post'>\n";
  31. echo "<br /><strong>".$locale['605']."</strong>";
  32. echo "<p><input type='submit' name='exit' value='".$locale['606']."' class='button' /></p>";
  33. echo "</form>\n";
  34. }
  35.  
  36. if (isset($_POST['check_proxies'])) {
  37.  
  38. $timeout = 5;
  39.  
  40. $list = dbquery("SELECT proxies_id, proxies_good FROM ".DB_PROXIES." ORDER BY proxies_id");
  41.  
  42. while ($check = dbarray($list)) {
  43.    
  44.    echo $check['proxies_id'].") Checking <b>".$check['proxies_good']."</b>.......";
  45.    $server = explode(":", $check['proxies_good']);
  46.    $fp = @fsockopen($server[0], $server[1], $errno, $errstr, $timeout);
  47.    if($fp) {
  48.    echo $locale['610'];
  49.    } else {
  50.    echo "(".$errno.") ".$errstr."\n\n";
  51.    dbquery("INSERT INTO ".DB_PROXY_RES." (proxy_res_bad) SELECT proxies_good FROM ".DB_PROXIES." WHERE proxies_id = '".$check['proxies_id']."'");      
  52.    dbquery("DELETE FROM ".DB_PROXIES." WHERE proxies_id = '".$check['proxies_id']."'");
  53.    }
  54. }
  55. echo "<form name='exit' method='post'>\n";
  56. echo "<br /><strong>".$locale['605']."</strong>";
  57. echo "<p><input type='submit' name='exit' value='".$locale['606']."' class='button' /></p>";
  58. echo "</form>\n";
  59. }

кстати, ошибка с offset была связана не с неправильным разделителем, а с тем что this one требует аутентификацию, те в мусор (это лечиться вот этим - if(!empty($result[0]) && ...)
на fsockopen остановилась, потому что уж больно хорошо все ошибки расписывает, много попутной информации можно узнать )
ой сорри, вот локали
PHP:
скопировать код в буфер обмена
  1. $locale['605'] = "After viewing, please, complete the execution...";
  2. $locale['606'] = "To complete";
  3. $locale['607'] = "Check proxy";
  4. $locale['609'] = "This one's unique!";
  5. $locale['610'] = "This one's alive!";
  6. $locale['612'] = "Check anonymity";
  7. $locale['613'] = "This one's anonymous!";


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


А ещё забыла, сначала проверяете на живучесть, а потом из остатка на анонимность, иначе будет очень долго думать и в итоге ещё и ошибку выкинет, в принципе можно объединить всё под одну кнопку, но мне, например так удобнее, легче ошибки коннекта и тд отслеживать

(Отредактировано автором: 16 Апреля, 2011 - 19:24:08)

 
 Top
Страниц (6): « 1 2 3 4 5 [6]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB