Comments 30
1) Простой скрипт с REMOTE_ADDR — не катит, в REMOTE_ADDR по идее всегда будет тупо адрес проксика, который шлет запрос. Надо проверять HTTP_X_FORWARDED_FOR, HTTP_REAL_IP как минимум, а вообще неплохо бы по всему массиву заголовков пройтись и проверить, т.к. бывают атипичные.
2) Из пункта 1 неявно следует, что 100% полагаться на myip.ru тоже особого смысла нет, т.к. неизвестно какие он IP адреса выдает, из каких «переменных»
2) Из пункта 1 неявно следует, что 100% полагаться на myip.ru тоже особого смысла нет, т.к. неизвестно какие он IP адреса выдает, из каких «переменных»
+3
p.s.: И применительно к решаемой задаче. Крайне редко анонимные фришные проксики бывают достаточно быстрыми для просмотра видео. А учитывая их нестабильность и относительно малую живучесть, смысла в них для этих целей не много на самом деле. Имхо разумнее замутить нечто вроде этого habrahabr.ru/blogs/infosecurity/107631/ или тупо купить американский проксик.
0
Вообще-то именно в этом и состояла задача. Посмотреть, какой адрес оказывается в REMOTE_ADDR
Не ставил задачу отделять высоко анонимные прокси, где действительно надо просматривать все возможные заголовки.
Не ставил задачу отделять высоко анонимные прокси, где действительно надо просматривать все возможные заголовки.
0
распечатайте все полученные заголовки и ищите среди них свой айпи
если его там нет — прокси анонимная
если его там нет — прокси анонимная
0
Вместо того, чтобы обращаться к некоему HTML-сайту, определяющему IP, выкачивать с десяток килобайт, а затем парсить — не лучше ли использовать ifconfig.me/ip?
+6
Я как-то точно такой же многопоточный скрипт сделал (сначала надеялся на LWP::Parallel::UserAgent, но не получилось) — работает, но памяти жрёт… Для проверки анонимности запроса использовался свой скрипт на хостинге, который проверял наличие лишнего в запросах.
Минусы перловой многопоточности: 1) сколько памяти занимает 100 потоков? — дофига; 2) а если в этих потоках не обращение к медленным web-серверам делать, а что-то более быстрое, — какую долю будет занимать обращение к shared переменным? В Windows и Linux результаты будут немного разные, но общий вывод не очень утешительный.
Минусы перловой многопоточности: 1) сколько памяти занимает 100 потоков? — дофига; 2) а если в этих потоках не обращение к медленным web-серверам делать, а что-то более быстрое, — какую долю будет занимать обращение к shared переменным? В Windows и Linux результаты будут немного разные, но общий вывод не очень утешительный.
0
Увидев картинку, я подумал, вы устройство Фарнсворта сделали и через него посмотрели ролик) Блог «Perl» не разглядел…
+1
Эту задачу можно решить без use threads;
Например, AnyEvent + AnyEvent::HTTP (или обертка над ним).
Если хотим, чтобы выглядело как треды, то use Coro;
Например, AnyEvent + AnyEvent::HTTP (или обертка над ним).
Если хотим, чтобы выглядело как треды, то use Coro;
+2
Еще один велосипед с тредами и сокетами. Люди, расскажите, кто вас научил распараллеливать сетевые операции тредами? Почему вы не используете select / AnyEvent?
+2
Фиг с ним с перлом. Сериал надо посмотреть. Название правильное.
+1
Какой то странный код даже для обучающего оО
В каком формате список прокси лежит? Если в виде — каждый прокси на строку в файле, то цикл перебора можно упростить до:
В каком формате список прокси лежит? Если в виде — каждый прокси на строку в файле, то цикл перебора можно упростить до:
# Читаем список проксей
open FIL, 'proxy.lst';
my @proxy = ;
@proxy = grep { /(\d+\.\d+\.\d+\.\d+:\d+)/ } @proxy;
print "Proxies found: ".@proxy."\n";
выборка следующего прокси из массива тоже не особо ясная конструкция, ее можно привести к виду:
# Получаем следующую проксю из списка
my $proxy=shift(@proxy);
# Если список кончился, заканчиваем
unless ($proxy) {
print "- Thread $num done.\n";
return;
}
И вообще лучше не использовать бесконечный цикл с тредами, а использовать AnyEvent.
0
Блин, хабрапарсер пожевал код :(
my @proxy = <FIL>; должно быть
my @proxy = <FIL>; должно быть
0
Суть в том, что файл может быть в любом формате — например, весь текст выделен в браузере и скопирован в файл, а на странице было указано несколько проксей в одной строке, например в таблице.
Поэтому указанный способ более универсален.
Чем лучше отформатирован список, тем, понятно, проще его будет обрабатывать.
Поэтому указанный способ более универсален.
Чем лучше отформатирован список, тем, понятно, проще его будет обрабатывать.
0
А без lock при использовании threads::shared будут дублированные проверки проксей.
0
UFO just landed and posted this here
Имею такую ситуацию: в одной компьютерной сети есть считалка трафика, которая разгребает потоки netflow и складывает результаты в БД.
Считалка написана на Perl и в критические моменты скушивает аж одно ядро процессора. Мне то процессора не жалко, но дело в том что есть ещё 7 ядер которые загружены на 1..2 процента.
Умеет ли Пёрл параллелиться на несколько процессов? или здесь только fork() спасёт ситуацию?
Потому что thread'ы оно хорошо, но с точки зрения планировщика операционной системы это всё-равно остаётся одним процессом.
Считалка написана на Perl и в критические моменты скушивает аж одно ядро процессора. Мне то процессора не жалко, но дело в том что есть ещё 7 ядер которые загружены на 1..2 процента.
Умеет ли Пёрл параллелиться на несколько процессов? или здесь только fork() спасёт ситуацию?
Потому что thread'ы оно хорошо, но с точки зрения планировщика операционной системы это всё-равно остаётся одним процессом.
0
Sign up to leave a comment.
Многопоточность в Perl, или Как я посмотрел ролик о съёмках Warehouse 13