Парсинг Яндекс ТИЦ на примере списка пользователей ЛиРу

В заметке рассмотрено использование многопоточного парсера Яндекс ТИЦ на примере обработки списка пользователей ЛиРу (Liveinternet). Для запуска понадобятся: bash (под Windows можно использовать cygwin), perl, wget и, для большего удобства представления результатов, — sort. Все эти утилиты присутствуют практически в любой *nix-ОС или могут быть установлены в cygwin.
(далее…)

Сохранение статистики внешних входящих ссылок из Яндекс.Вебмастер

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

Запрос через Яндекс-поиск с ключом link (вида http://yandex.ru/yandsearch?text=link%3D%22dimio.org%2F*%22&lr=2) выдает сильно отличающийся от вывода Я.Вебмастер результат. Интернеты вообще сообщают, что ключ link не поддерживается Яндексом уже несколько лет.

Оставалось только одно — забирать интересующую информацию прямо со страницы из Вебмастера. Сделал небольшой скрипт на perl, который и решает поставленную задачу. Скрипт целиком доступен на отдельной странице, в заметке остановлюсь подробнее только на паре моментов.
(далее…)

Ответы@Mail.Ru — мечта спамера

С удивлением заметил, что e-mail адреса пользователей сервиса «ответы» на mail.ru хранятся в коде страниц в открытом виде, как на заре интернетов прямо. Никаких попыток скрыть адреса — даже странно в наше время. Можно легко и непринуждённо сграбить базу email для дальнейшего брутфорса паролей к ним или например спама (поскольку на сервисе есть категории — вероятно и целевую аудиторию можно прикинуть по ним).

В общем всё делается предельно примитивно, в старом добром шелле, без разных модных многопоточных грабберов из облака (для брутфорса кстати облако наверное очень интересным может быть):

 wget -q -O - http://otvet.mail.ru/open/?pg={1..10} | grep -ioE '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b' | sort -ui >> ./otveti_email.txt

Как видно из примера — я сграбил для проверки первые 10 страниц открытых ответов получив в итоге 197 уникальных адресов, сохраненных в пополняемый файл с email-адресами. В принципе для скорости и удобства можно каждую категорию в отдельном процессе выкачивать, с сортировкой результатов уже после загрузки, непосредственно из файла.

Напоследок ссылка для тюнинга регулярки под grep по поиску email-адресов.

UDP: Под катом для примера выложил простой скрипт на bash, который парсит некоторые страницы раздела «Компьютеры и интернет» с Ответы@Mail.ru и раскладывает полученные e-mail адреса по категориям. Его несложно дополнить всё теми же штатными средствами оболочки чтобы автоматически обходить дерево разделов и парсить e-mail адреса из всех категорий.

(далее…)

Сравнение производительности сетевых библиотек в Perl

Когда задумал сделать парсер тИЦ для LJ Add/Remove Fiends — решил для начала проверить, какой способ загрузки страниц с показателями тИЦ из скрипта окажется быстрее, поскольку это в любом случае окажется самым узким местом в производительности парсера (любая обработка уже полученных данных, если она сделана без грубых ошибок типа бесконечного цикла, происходит гораздо быстрее загрузки этих данных по сети).

Для начала проверил на локальной машине (первый тест), затем на сервере (второй тест). Воспользовался модулем Benchmark::Timer, по сути он ставит метки начала и конца, после чего вычисляет разницу между ними (то же самое несложно получить с использованием Time::HiRes). У Benchmark::Timer правда есть дополнительная возможность — он может гонять тест до получения результата с заданной обеспеченностью и заданным процентом ошибки.

Третьим тестом, уже из чистого любопытства (поскольку результат был предсказуем) был тест многопоточной загрузки. Естественно этот вариант оказался быстрее любого из однопоточных, в среднем в два раза (при 15 потоках).

Выводы — библиотеки Perl не только выгодней с точки зрения безопасности, но и работают стабильно быстрее вызовов системных утилит. Самую медленную загрузку показал Wget, основывать парсер на нём — явно плохая идея. Многопточность естественно вне конкуренции. Подробности ниже.

(далее…)

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

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

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

(далее…)

Каталог аккумуляторов с avtoakkumulator.ru

Выкачивал для своих нужд каталог автомобильных аккумуляторов по производителям с сайта avtoakkumulator.ru — выкладываю, может кому-то для чего-нибудь понадобится: скачать каталог avtoakkumulator.ru

Выглядит выгруженный каталог следующим образом:
[code=»xml»]



80

700
750
440

278*175*190
< Исполнение днищевой планки>выступ с 4 сторон
< Напряжение>12 В
< Полярность>универсальная полярность
< Расположение клемм>утопленные
< Тип клемм>комбинированные

[/code]

Пользуйтесь, кому нужно 🙂
P.S. При необходимости «почистить» теги XML от пробелов и другого мусора — см. ниже.
(далее…)

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

Грабим nakolesah.ru

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

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

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

(далее…)

Парсер-граббер nakolesah.ru

Был занят в свободное (от основной работы) время — делал халтуру, которая заключалась в просьбе написать парсер, чтобы сграбить структуру подбора колёс по автомобилю с сайта nakolesah.ru (естественно, на языке perl).
И вот сегодня он готов (начал в минувшее воскресенье) и проходит тестирование у заказчика. Приятно то, что это первый случай, когда моё хобби принесло небольшую денежку (которую я потрачу на другое хобби — охоту 🙂 ).
(далее…)