Сначала рекомендую прочитать часть 1 - инструментарий.
В этой части я расскажу основные методы анализа форм регистрации и приведу пример написания простого регистратора для сервиса без капчи. Подопытным будет сервис закладок toodoo.ru 
В прошлый раз я говорил, что нам понадобится Firefox и расширение Web Developer. Говорил я это не от скуки, а потому что это действительно облегчит жизнь. Этот способ анализа самый простой и наглядный, и его обычно более, чем достаточно.
Теперь действует просто: заходим на страницу регистрации, в панели Web Developer выбираем Формы → Информация о формах. В открывшейся вкладке мы получим детальное описание всех имеющихся форм на странице.
![]()
Определить нужную довольно легко по адресу скрипта-обработчика (поле "Действие" в таблице), по id или по именам полей.
Из этой таблицы нам понадобится список полей формы и их значения по умолчанию. Так же стоит сразу запомнить поля логина, емейла и пароля, они нам понадобятся при написании регистратора 
Кроме того, если и более визуальный способ - Формы → Показать параметры форм:
На этот раз мы прибегнем к помощи еще более мощного инструмента - FireBug. Это инструмент воистину убийственной мощи и нужен он в основном для отлова всяких JavaScript'овых защит, добавляющих дополнительные поля, меняющих значения или посылающих дополнительные запросы. Из личного опыта скажу, что такое встречается очень не часто. По-настоящему необходим он был всего один раз, зато оправдал себя на все 100%.
Действуем так:
Вид → Исходный код страницы. И вкуриваем до просветления
На самом деле, способ тоже ничего так себе, но два предыдущих удобнее. Зато это можно делать хоть в IE.
Ниже я привожу подробно откомментированный код авторегистратора для toodoo.ru. В нем умышленно допущена пара простых синтаксических ошибок, чтобы кто попало не злоупотреблял им
Для того, чтобы их исправить, достаточно базовых знаний PHP.
<?php // Функция, производящая регистрацию function register($login, $email, $password) { // Все POST-параметры, которые надо отправить $post = array( 'agree' => 1, // Да, мы согласны с правилами ;-) 'profile_is_female' => 0, // Укажем пол 'profile_nick_name' => $login, // Наш логин 'user_email' => $email, // email 'user_password' => $password // пароль 'user_password_repeat' => $password,// повторим пароль ); // Особая, curl-ная магия $ch = curl_init(); // Инициализируем сессию curl_setopt($ch, CURLOPT_URL,"http://toodoo.ru/account/signup"); // задаем адрес обработчика формы curl_setopt($ch, CURLOPT_POST, 1); // Указываем, что нам нужно отправить POST-запрос curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // Передаем POST-параметры curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Результат нам нужно вернуть в переменную, а не на экран curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам // Генерируем временный файл для cookies, чтобы они не терялись между запросами-редиректами $temp = tempnam('.', '__'); curl_setopt($ch, CURLOPT_COOKIEJAR, $temp); unlink($temp); // Запускаем запрос! $result = curl_exec($ch); curl_close ($ch); // Закрываем сессию // Проверяем на успешность регистрации if(strstr($result, 'Поздравляем, ты успешно зарегистрировался в toodoo!')) { return true; } else { return false; } } // Параметры регистрации. Их можно задавать руками, или считывать из файла - на ваше усмотрение. $login = 'Dummy'; $email = 'dummy@yopmail.com'; $password = 'qwerty'; // Выводим, что мы будем регать echo "Логин: $login, пароль: $password, email: $email<br/>"; // Регаем if(register($login, $email, $password)) { echo 'Успешно зарегистрирован'; } else { echo '<b>Ошибка регистрации</b>'; // Все! ;-) ?>
Тот же самый код вы можете скачать во вложении.
Кроме того, есть один тонкий момент: файл должен быть сохранен в той же кодировке, что и подопытный сайт, поскольку мы проверяем успешность регистрации, ища кириллическую подстроку. Если сохранить в неправильной кодировке, то она никогда не найдется и все время будет выводиться ошибка. В случае с toodoo.ru - это UTF-8.
...будем учиться учимся бороться с капчей.
| Прикрепленный файл | Размер |
|---|---|
| toodoo.php | 2.38 кб |
А без curl сложно это сделать? И еще хотелось бы про прокси узнать, где их берут, и как юзаются они в скриптах, но это наверное часть 4-5? =) Однако спасибо...
curl - самый простой вариант, потому что необходимо отправлять POST запросы. Можно, конечно, делать напрямую через fsockopen, но это в разы геморнее.
Про то, как юзать прокси я напишу, это просто
Ну а где брать - лично дело каждого.
Покажите реализацию с проксями, пожалуйста.
Используйте curl_setopt() С параметрами CURLOPT_PROXY и CURLOPT_PROXYPORT
Эх примерчик бы с регистрацией почты на яндексе... Разумеется с ошибками в синтаксе.
Ну что касается Яндекса, то пара рабочих вариантов бродит по сети. Найдите и будет вам пример

И вообще, на данном этапе, если вы прочли все три части, то должны уметь сами написать
Отправить комментарий