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

Итак, начнем.

Эта площадка для размещения объявлений крайне популярна. Количество ежедневно публикуемых объявлений исчисляется тысячами, ну и, как следствие, количество парсеров, которые ежесекундно бороздят этот сайт, соразмерно велико.

Поверхностно изучив данный ресурс видим, что cookie генерируются не только сервером, но и на клиенте. Моя любимая js капча, вновь на вооружении. Это воистину самое действенное средство против 90% горе парсописцев. В данном случае, ключ (или даже ключи) записываются в cookie, и уже так отсылаются на сервер. Очевидно, что методы типа 

 curl_setopt($ch, CURLOPT_COOKIEFILE,  dirname(__FILE__).'/cookie.txt');

нам уже не помогут. 

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

Ну, что же, засучим рукова и вперед. Обычно я сперва пишу парсер, потом, когда все получится, пишу статью. На этот раз есть лишь задача, на момент написания этих строк парсер еще не написан, все опыты проделаны лишь в отладчике. Я буду писать все от и до, как я это делаю.

Рассказать друзьям

В очередной раз написав "поиск" для проекта задумался о его удобстве. Очень малое число людей владеет слепым методом печати, поэтому вводят не глядя на экран. В результате появляются такие вещи типа «Bpvtytybt hfcrkflrb cnhjrb d ЗРЗ bkb Згтещ Ыцшесрук yf зрз» (Изменение раскладки строки в PHP или Punto Switcher на php). Заставлять юзера вводить текст заново, как-то не гуманно. Яша и Гугл автоматически подбирают верный вариант. Чем мы хуже.

Чтобы поиск был более-менее адекватный, надо переводить раскладку во все возможные варианты написания, к примеру: «hfcrkflrf ЗРЗ» нужно перевести в «раскладка ЗРЗ»  и  «раскладка PHP» и проверить все три варианта. По хорошему надо делать 3 разных запроса и выводить данные по тому, который вернул больше всего данных, либо выводить все варианты, но тот что находит больше всего выводить выше.

Рассказать друзьям

Во истину, все гениальное просто. Открыл для себя удивительную php функцию highlight_string, как понятно из названия данная функция подсвечивает код в зависимости от синтаксиса, на выходе вы получаете html код который можно вставить в любую html страницу, не нужны ни css ни js. Все будет подсвечено, аккуратно и просто:

<?php highlight_string('<?php echo 1; ?>',true); ?>

на выходе дает вот такой html код

<code><span style="color: #000000"> <span style="color: #0000BB"><?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?></span> </span> </code>

или если это отобразить на странице то так

<?php echo 1?>

круто, да?! 

Вторым параметром функция принимает true или false, если true то функция возвращает результат, если false, то выводит его на экран. По умолчанию стоит false 

Рассказать друзьям

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

В этой статье я расскажу, как работать с данным пакетом на примерах. Для начала небольшая демонстрация работы. До:

.Великолепная Элизабет Душку до обработки беблиотекой tulipip php

И после

Великолепная Элизабет Душку после обработки беблиотекой tulipip php

Рассказать друзьям

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

Распаковка файлов на стороне сервера при помощи нативных средств php

Рассказать друзьям

Подкатегории

Все о разработке на фреймворке Yii