вторник, мая 29, 2007

Маскируем скрипт - прикидываемся браузером

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

Зачем это нужно? Опыт показывает, что, например, поисковые системы - скрипту эмулирующему браузер перекрывают кислород намного позже.

Чем браузер отличается от скрипта? Он передаёт строку юзер-агента, сохраняет и отдаёт куки, передаёт сточку реферера (адрес страницы откуда пришли) - мы будем делать то же самое.

Простейший способ использования CURL:

$url = "http://www.site.com";
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$str = curl_exec($ch);

curl_close($ch);


Текст страницы оказывается в переменной $str - с ним потом можно делать всё что угодно.

Теперь тюнингуем наш простейший скрипт.

1. Добавляем сточку юзер-агента

$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);


Строчку юзер-агента можно вставить любого популярного браузера. Это - для Microsoft Outlook 6.0. Также браузер часто передаёт версию ОС и некоторые параметры - например тут версию .NET.

2. Если вызываем несколько страниц на сайте, сохраняем и отдаём куки


$cookie_file = " ..тут вставляем путь к файлу ..";
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);


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

3. Передаём реферера.

Реферер - это адрес страницы, указывающий откуда пришёл пользователь, т.е. адрес страницы на которой была ссылка или форма, действие которой привело на текущую страницу.

curl_setopt($ch, CURLOPT_REFERER, "http://site.com");

Для чего это нужно? Некоторые сервисы могут его проверять и делать определённые выводы. Например, для парсинга страниц результатов поиска Google - можно установить реферер http://google.com - т.е. мы показываем наш эмулятор браузера - "пришёл" на страницу с результатами поиска с главной страницы.

4. Делаем небольшую паузу между запросами

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

sleep(5);

Также можно сделать случайную паузу, например от 2 до 10 секунд.

sleep( rand(2,10) );

5. Использование прокси

Чтобы совсем замаскировать следы - можно использовать прокси.

curl_setopt($ch, CURLOPT_PROXY, "111.222.333.444:5555");

Нужно удалять файл куки перед сменой прокси.


Инструкции для эмуляции браузера с использованием CURL получаются следующие:

$url = "http://www.site.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

$cookie_file = " ..тут вставляем путь к файлу ..";
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

curl_setopt($ch, CURLOPT_REFERER, "http://site.com");
curl_setopt($ch, CURLOPT_PROXY, "111.222.333.444:5555"); //Прокси - если необходимо

$str = curl_exec($ch);
curl_close($ch);

...

sleep( rand(2,10) );

22 комментария:

Анонимный комментирует...

Спасибо, очень помог :-)

Unknown комментирует...

Спасибо, а можеш поделитсья скриптом по замене и проверке прокси?

Анонимный комментирует...

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

$cookie_file = "cookie.txt";
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

И еще такой вопрос, на одном хостинге скрипт выдал что в сейфмоде функция curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1) не поддерживается. Что нибудь можно сделать?

Анонимный комментирует...

не знаю - может кому пригодится - полная эмуляция браузера (я бы сказал даже управление реальным браузером )) ) на пхп - xedant human emulator называется ...

Анонимный комментирует...

[url=http://wmtraffs.ru/]WMTraffs.ru[/url] - зарабатывай бабло, продавая popunder трафик на нашей партнёрке
Проект WMTraffs.ru предлагает Вам способ зарабатывать на своих ссылках, не имея сайта. Такженаша партнёрка предлагает выкуп трафика с сайтов сети интернет с помощью технологий popunder, clickunder, растяжка в шапке, обычные баннера.

Анонимный комментирует...

[color=#5588aa]Музыкальный ансамбль [url=http://dejavu-group.ru/about_us.php]Дежа вю[/url] - это коллектив профессиональных вокалистов и музыкантов.
[url=http://dejavu-group.ru/about_us.php]Дежа вю[/url]- один из лидеров в области музыкального сопровождения корпоративных вечеринок, свадеб, торжеств, шоу программ, музыкальных ыечеров.
В репертуаре Музыкантов Dejavu-group около 3 тыс. произведений.
Только живое исполнение. Ретро, хиты 70-80-90-х, джаз, диско, поп, современная музыка, европейские хиты, фоновая музыка, шансон.
Музыкальная группа Дежа вю располагает мощной качественной музыкальной аппаратурой, позволяющей наполнить приятным уху звуком как небольшое помещение (фуршет), так и огромное помещение (корпоратив до 1000 человек).

Игорь +7 916 623 4047 [/color]

Анонимный комментирует...

Задумались о презентах на НГ сыну, ему 4 годика, всевозможные-пылесборники-конструкторы у него есть предостаточно, он любитмышку Тич. Я откапала типа такой игрушки, только мишку http://www.sweetwear.ru/video1.php , кто-нибудь покупал такого? Есть смысл покупать? Или порекомендуйте что-либо ещё. Не дайте ребенку остаться без подарочка от Санты.

Анонимный комментирует...

желаю все щастя в новом году

Анонимный комментирует...

не очень

Анонимный комментирует...

[url=http://vybory2012.com]Нескорый суд[/url] [url=http://tvparty.biz]и более всего[/url] [url=http://allmet.org]Насмешки недостойных[/url] [url=http://otzv.net]над достойным[/url] [url=http://vgashop.net]Когда так просто[/url] [url=http://jmarket.info]сводит все концы[/url] [url=http://avto-shop.biz]Удар кинжала[/url]

Анонимный комментирует...

[color=#5588aa]Музыканты на праздник [url=http://dejavu-group.ru/about_us.php]Dejavu-group[/url] - это коллектив заслуженных вокалистов и музыкантов на праздник.
[url=http://dejavu-group.ru/about_us.php]Deja Vu[/url]- законодатель в области организации и проведения свадеб, дней рождения, корпоративных вечеров, шоу программ.
В репертуаре Музыкантов Deja Vu более 3000 произведений.
Живой звук. Поп, хиты 70-80-90-х, диско, джаз, ретро, современная музыка, европейские хиты, фоновая музыка, шансон .
Артисты на праздник Дежа вю располагает мощной качественной музыкальной аппаратурой, которая позволяет заполнить приятным уху звуком как небольшое помещение (фуршет), так и большое пространство (корпоратив до 1000 человек).

Игорь +7 916 623 4047 [/color]

Анонимный комментирует...

спасибо за инфу!

Анонимный комментирует...

а-а, спасибо )

Анонимный комментирует...

нет, не всегда. но в этом случае, да.

Анонимный комментирует...

нет, не всегда. но в этом случае, да.

Анонимный комментирует...

Хоть кто-то здравомыслящий остался

Анонимный комментирует...

жаль что результаты javascript этот браузер не выдает. если страница формирует части с ajax то их не получаем... может есть методы обойти это?

Анонимный комментирует...

Ну, вот… так всегда: сначала все путем, а потом пошло-поехало…

Анонимный комментирует...

Если кому интересно, лучший способ защитить себя от навязчивых мобилок - использовать Подавители связи

Анонимный комментирует...

Best-lournals.ru - Читайте онлайн журналы.

Анонимный комментирует...

Best-journals.ru - Читайте онлайн журналы.

edelvaice комментирует...

edelvaice.com