Анонимайзер как замена прокси. Проверка анонимайзеров на валидность

Скрипт для составления и проверки списка веб-прокси

Наткнулся на любопытную заметку под названием «И еще немного про Google Hack«, в которой автор описывает использование анонимайзеров (пример анонимайзера — сайт Anonymouse) вместо публичных прокси для обхода капчи в Google.
Такой способ использования анонимайзеров мне тоже приглянулся и я решил написать свой скрипт для сбора и проверки на валидность списка публичных веб-прокси.

(далее…)

Синхронизация текстовых файлов — простой скрипт на Perl

Случилось так, что мне стало очень нужно синхронизировать ограниченный набор файлов между флешкой и компьютером. При этом руками копировать туда-сюда, вспоминая, какой файл редактировал последним — утомительно, а «монстры» синхронизации излишни ввиду примитивности задачи, ведь рекурсивная синхронизация директорий и прочие навороты мне ни к чему.

Решил набросать простейший скрипт на Perl (поскольку перл есть у меня и дома, и на работе, в отличие от баша например), который бы проходил по указанным мной файлам и синхронизировал их опираясь на дату последнего изменения, иными словами — более свежие файлы будут заменять устаревшие.

(далее…)

Perl [Practical Extraction and Report Language]

Кратко о Perl

Perl — динамический язык программирования высокого уровня. Был задуман и начал создаваться как язык для удобной работы с текстовой информацией, отсюда вытекает основная особенность языка — строковой тип данных (строка представляет собой единый объект, а не массив отдельных символов, эту же особенность унаследовал от Perl язык PHP).

Язык знаменит своими мощными возможностями по обработке текстовых данных, что делает его весьма привлекательным для создания web-ориентированных cgi-скриптов и различных парсеров, использующих возможности регулярных выражений.

Интерпретатор Perl открытый, существуют сборки под многие популярные платформы. Также язык славится огромны количеством дополнительных модулей-библиотек, ускоряющих и упрощающих разработку приложений для решения типовых задач.

Не секрет, что perl часто используется на VPS-серверах и хостингах, в таком случае обслуживание серверов — достаточно востребованная работа. Если самостоятельно обслуживать сервер нет возможности — лучше использовать готовый сервер на хостинге, оставив решение задач по его обслуживанию техподдержке.

Интересные особенности Perl

Конструкция Switch/Case

Штатно возможность использовать конструкцию switch/case предусмотрена не была, однако это ограничение может быть обойдено достаточно простым и элегантным способом:

1
2
3
4
5
6
7
my %case = (
                  'action1' => \&action1,
                  'action2' => \&action2,
                  'actionN' => \&actionN,
                  );
my $action = 'action1';
$case{$action};

Помимо этого, можно использовать дополнительный модуль Switch, включив директиву use Switch;. В Perl6 конструкция switch/case встроена в интерпретатор.

Регулярные выражения в Perl

Мощная встроенная в язык поддержка регулярных выражений — это то, чем силён Perl. Основные операторы, используемые при работе с регулярными выражениями в Perl, это s///, m//, =~ и split (да, это тоже оператор).

Важной особенностью регулярных выражений, появившейся в последных версиях Perl, является поддержка исполнения встроенного Perl-кода и динамичности, что позволяет, например, описать и найти при помощи регулярного выражения конструкцию с любым количеством уровней вложенности без знания этого количества.

Тема регулярных выражений отлично раскрыта в имеющейся в разделе «Библиотека» книге Mastering Regular Expressions (Регулярные выражения), издание второе.

Примеры программ на Perl

Парсер тИЦ

Простейший парсер значений тИЦ, написанный на Perl, может выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
use LWP::Simple;

my $base_url = 'http://bar-navig.yandex.ru/u?ver=2&show=32&url=';
my $target_url = 'http://dimio.org';
my $content = get($base_url.$target_url);
    die "Can't load tCY page!\n" if !$content;

if ( $content =~ m/^<tcy\srang="(\d{1,4})"\svalue="(\d{1,6})"\/>$/imsxo ) {
    print 'Yandex Rang = '.$1.', Yandex tCY = '.$2,"\n";
}
exit 0;

Более продвинутый парсер ТИЦ — с параллельной загрузкой значений ТИЦ для переданного в скрипт списка сайтов — можно найти в разделе Софт.

Скрипт для автоматической смены IP-адреса в TOR

Для сети TOR (бесплатные рабочие SOCKS-прокси) можно сделелать Perl скрипт для автоматической смены НИМа / получения новго IP-адреса с использованием модуля Expect или при помощи модуля Net::Telnet.

Автоматическое наполнение WordPress контентом

Как и обещал, выкладываю скрипт для создания контента под блог на wordpress (о том, как наполнять блоги на wordpress контентом я уже писал в заметке Автоматическое добавление контента в WordPress-блоги).
Выкладываю опять же «как есть» — работоспособность присутствует, а осталное не гарантируется 🙂
Кстати, именно на основе этого скрипта и родилась бесплатная программа для создания импортируемого в WordPress XML-файла — WordPress XML Creator.
(далее…)

Автоматическое добавление контента в WordPress-блоги

Ещё где-то в одной из первых записей обещал выложить Perl-скрипт, которым раскладывал контент по сетке блогов (работает напрямую с базой данных wordpress). Только недавно об этом вспомнил 🙂
Выкладываю как есть (т.е. он полностью работоспособен, а эстетические ляпы пусть остаются), внутри в общем-то всё довольно понятно (на мой взгляд) описано. Почти все настройки вынесены в начало скрипта (настройки БД для wp-блогов см. со строки 155).

Сам скрипт только наполняет базы сетки блогов (таблицы для всех блогов сетки хранятся внутри одной БД) и обновляет информацию о времени публикации записей, контент для него должен быть подготовлен заранее (скрипт для подготовки контента тоже выложу на днях), для хранения подготовленного контента используется ДБ в формате SQLite3.

Открыть код скрипта в новом окне.

Пополнение библиотеки — Perl Cookbook

Perl Сборник рецептов для профессионалов - скачать бесплатно

Сегдняшней книге, пополнившей «Библиотеку» сайта, решил посветить отдельную заметку — она этого заслуживает.

Книга носит название «Perl. Сборник рецептов для профессионалов (Perl cookbook)» (второе издание) и представляет собой собрание готовых решений на perl для огромного круга типичных задач, с которыми возможна встреча на практике.

Материал изложен доступно, структура продуманная, рецепты готовы к применению 🙂

Книгу должно иметь и глупо не пользоваться ей.

Pastebin из консоли. Просто и удобно.


Стал часто пользоваться сервисом pastebin и добавлять свои заметки через браузер руками быстро надоело.
Поискал и нашел в репозитории программку pastebinit — не устроила из-за ограничений по работе с pastebin-сервисами (чтобы добавили новый сервис — надо написать автору и ждать-ждать-ждать — не очень интересно), тем более, что я как раз на хостинге сделал свой сервис на стандартном движке pastebin, чтобы не иметь проблем с кодировкой (pastebin по умолчанию работает не в unicode), да и просто из интереса.
(далее…)

Автоматическое определение кодировки терминала в perl-скрипте.

Надоело руками менять кодировки для нормального вывода русского текста в своих perl-скриптах в зависимости от кодировки терминала (запускаю скрипты под Linux (utf8), Windows (ActivePerl, cp866) и Windows (Cygwin, cp1251)). Немного погуглил, но никаких готовых рецептов не встретил, хороший запрос для поиска что-то в голову не пришёл.

Решил поступить следующим образом — определять операционную систему, в которой запущен скрипт, и в зависимости от этого выставлять кодировку выходного потока (STDOUT):

#!/usr/bin/perl;
use utf8;
require encoding;
import encoding  ('utf8', 'STDOUT' => &SetEncoding);

sub SetEncoding {
    if ($^O =~ /^MSWin\d{2}$/i) {
        return 'cp866';
    }
    elsif ($^O =~ /^cygwin$/i) {
        return 'cp1251';
    }
    elsif ( условие для следующей ОС (например - linux) ) {
        return 'utf8';
    }
         ... и так далее, исходя из личных потребностей ....
}

Замечания, исправления, дополнения и/или другие способы решения задачи по автоматической установке кодировки для perl-скрипта всегда приветствуются!

И на всякий случай, если вдруг мне не удастся найти время написать ещё что-то в блог до нового года — поздравляю всех своих читателей с наступающим новым годом, успехов вам и побольше приятных открытий! 🙂

PS: А для интересующихся фрилансом — новый, но достаточно любопытный ресурс ФрилансFM — портал о фрилансе.

Парсер базы nakolesah.ru

Грабим nakolesah.ru

Пример работы парсера сайта nakolesah.ru

Уф, докрутил парсер nakolesah до вменяемого состояния и сграбил подбор шин по автомобилю. Кому интересно — ссылка на сам скрипт в конце поста.

Что-то в нём ещё буду менять, не очень мне нравится логика работы нынешняя, основанная на GET-запросах (тогда как браузер получает всю информацию, обращаясь к asp-скрипту с передачей разных параметров в POST-запросе). У меня POST только в конце, а надо бы попробовать работу браузера полностью скопировать, да времени особо не было разбираться.

(далее…)

Генерация CAPTCHA на perl при помощи Authen::Captcha

генерация captcha на perl Я уже приводил алгоритм и готовый код для генерации проверочного изображения (СAPTCHA) для perl, реализуемой при помощи работы с библиотекой Image::Magick (предоставляет интерфейс между perl и самой imagemagick). Сейчас же хочу рассказать о работе с библиотекой Authen::Captcha, поскольку взаимодействие с ней проще, хотя теряется гибкость настроек генерируемого изображения. К слову, гибкость есть в библиотеке GD::SecurityImage, но у неё отстутствует простой механизм проверки результатов пользовательского ввода (этого недостатка должна быть лишена GD::SecurityImage::AC — "сплав" Authen::Captcha и GD::SecurityImage, которую я тоже обязательно попробую и расскажу о результатах).

(далее…)