Здравствуйте, уважаемые пользователи. Начал сам писать авторегистратор для 9gag.com Нашел в инете исходники, пытаюсь переделать. Вроде вникся, но что-то не получается. Пишу на PHP, т.е. скрипт (сам в программировании практически ноль) Собственно, вот код: PHP: <?php header('Content-Type: text/html; charset=UTF-8'); function register1() { // Особая, curl-ная магия $ch = curl_init(); // Инициализируем сессию curl_setopt($ch, CURLOPT_URL,"https://9gag.com/member/email-signup"); // задаем адрес формы curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Результат нам нужно вернуть в переменную, а не на экран curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // Указываем файл для хранения кукисов // Выполняем запрос $result = curl_exec($ch); // При помощи простейшего регулярного выражения добываем сессионный ключ preg_match('#<input type=hidden name="recaptcha_challenge_field" value="([a-f0-9]+)">#i', $result, $key); curl_setopt($ch, CURLOPT_URL,"http://www.google.com/recaptcha/api/image?c=$key[1]"); // задаем адрес картинки $result = curl_exec($ch); // Скачиваем картинку curl_close ($ch); // Закрываем сессию file_put_contents('captcha.jpg', $result); // Сохраняем return $key[1]; // Возвращаем добытый ключ } // Функция, производящая регистрацию function register2($login, $email, $password, $captcha, $key) { // Все POST-параметры, которые надо отправить $post = array( 'recaptcha_challenge_field' => $key, // Передаем сессионный ключ 'signup-email-name' => $login, // Логин 'signup-email-email' => $email, // Емейл 'signup-email-password' => $password, // Пароль 'recaptcha_response_field' => $captcha, // А это наш код с картинки 'do_reg' => 'Sign Up', // "Нажимаем" кнопку отправить ;-) ); // Особая, curl-ная магия $ch = curl_init(); // Инициализируем сессию curl_setopt($ch, CURLOPT_URL,"https://9gag.com/member/email-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); // Переходить по редиректам curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // Указываем файл для хранения кукисов. При чем он должен быть тот же, что и в прошлый раз, чтобы кукисы подхватились. // Запускаем запрос! $result = curl_exec($ch); curl_close ($ch); // Закрываем сессию // Проверяем на успешность регистрации if(strstr($result, 'Me Gusta! Welcome to 9GAG, go have fun now!')) { return true; } else { return false; } } // Параметры регистрации. Их можно задавать руками, или считывать из файла - на ваше усмотрение. $login = 'antifrager223'; $email = '[email protected]'; $password = 'qwerty'; // Выводим, что мы будем регать echo "Логин: $login, пароль: $password, email: $email<br/>"; // Если мы уже ввели капчу, то заканчиваем регистрацию if(!empty($_GET['captcha'])) { // Регаем if(register2($login, $email, $password, $_GET['captcha'], $_GET['key'])) { echo 'Успешно зарегистрирован'; } else { echo '<b>Ошибка регистрации</b>'; } echo '<br><a href="'.basename(__FILE__).'">Еще раз</a>'; } else { // Если капчу еще не ввели - отображаем ее и просим ввести :) $key = register1(); $form = '<h2>Введите код с картинки</h2> <img src="captcha.jpg"> <form> <input type="hidden" name="key" value="'.$key.'"> <input type="text" name="captcha"> <input type="submit" name="Go!"></form>'; echo $form; } ?> Форма регистрации: https://9gag.com/member/email-signup анализировал с помощью плагина для Firefox Web Developer. Проблема: Не понял что с капчей делать. Как получить сессионный ключ ? (в коде он с исходника, я просто не понял как и на что его менять) вот конкретно он: PHP: // При помощи простейшего регулярного выражения добываем сессионный ключ preg_match('#<input type=hidden name="recaptcha_challenge_field" value="([a-f0-9]+)">#i', $result, $key); И при выполнении скрипта он просто не выводит капчу (картинка пустая). И еще, сразу задам вопрос (я еще не искал это): как сделать, чтобы он брал email: pass с загруженного файла txt (по очереди) т.е. браз с базы, регистрировал, я ввожу капчу и далее со следующими. Кому не сложно, помогите, пожалуйста!
Конечно пустая, потому что нету такого участка формы, вероятна со времени написания скрипта прошло достаточно времени, и владельцы изменили форму регистрации. Надо выдирать отсюда: Code: <div id="recaptcha_image" style="width: 300px; height: 57px;"> <img style="display:block;" alt="reCAPTCHA challenge image" height="57" width="300" src="http://www.google.com/recaptcha/api/image?c=03AHJ_Vutgy6Tz1w01RXM7ROXu8Snhfb76a7Hy-XnzMkDNrq1LoAclmBdSO-mZVL2048ybBH4iqes3XrJnL92HWswCKS-GvQ-B1gk7oGL4z-MT0lDFUbj5y2_exS115xwZReSyZ13SFvp0XxNp5LUGUm7EFHbZzFy1sN_sa-0cMuiLJQJYlUGkd_4"> </div>
и вот снова.... немного другой код. но он намного ближе к тому, что мне нужно. Опять же уже все(!) изменил под себя. На сайт положил, запускаю и выдает ошибку Fatal error: Class 'Module' not found in /home/content/54/11502654/html/Memori.php on line 3 При чем на оригинальном такая же ошибка. Что это? 3-я строка - это скобка =\ (закрывается вконце)