justyork
@justyork

Логин через curl с редиректом на страницу

Всем привет, мне необходимо очень быстро отправить в форму 120 комбинаций, в ручную это займет какое-то время, так что хочу попробовать это реализовать через curl:

$email = login@mail.ru';
$pass = '123'; 
$login_url = 'http://site.ru/login';
$pin_url = 'http://site.ru/promo';
$agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3';
$referer = 'http://site.ru/';
$data = array('name' => $email, 'pass' => $pass, 'send' => 'Войти'); 


// вход в систему
// имя хоста, куда будем заходить 
// инициализация cURL
$ch = curl_init($login_url);
// получать заголовки
curl_setopt ($ch, CURLOPT_HEADER, 1); 
// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:
curl_setopt ($ch, CURLOPT_USERAGENT, $agent);
// елси проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:
curl_setopt ($ch, CURLOPT_REFERER, $referer);
// использовать метод POST
curl_setopt ($ch, CURLOPT_POST, 1);
// сохранять информацию Cookie в файл, чтобы потом можно было ее использовать
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
// передаем поля формы
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
// возвращать результат работы
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
// выполнить запрос
curl_exec ($ch);
// получить результат работы
$result = curl_multi_getcontent ($ch);
// вывести результат
echo "\n".'Login OK'."\n".'[result ===8<===>'."\n".$result."\n".'<===>8=== result]'."\n";
// закрыть сессию работы с cURL
curl_close ($ch);


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

Собственно вопросы:
1. Как перейти на страницу $pin_url и там уже начать делать перебор?
Возможно просто в этом же сеансе создать новый сеанс и просто перейти на новую страницу.
2. При переборе комбинаций, чтобы не вычислили я думаю надо поставить какой-то таймаут?
  • Вопрос задан
  • 4622 просмотра
Решения вопроса 1
@ChemAli
0. Входить не надо. Куки должный подцепиться сами, если будете использовать для последующих запросов те же опции (c вышеуказанным куки-файлом).
1. Сделать очередной curl_exec с $pin_url. Можно Не переходить, с разу делать запросы куда надо.
2. Если знаете что вычисляют или боитесь что вычислят — ставьте. Проще всего в цикле перебора sleep(rand(15)).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
Если я правильно помню, то CURLOPT_COOKIEJAR просто пишет сеансовые куки в файл, но не читает их. Что бы и читало при запуске тоже нужно использовать CURLOPT_COOKIEFILE.

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

Войдите, чтобы написать ответ

Похожие вопросы