С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96

Автоматическая регистрация curl

24.11.2013, 16:06. Показов 4584. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть один сайт который хотелось бы парсить но у него регистрация и страницы недоступны для парсинга
вот форма входа на сайт
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<form id="login_form">
                <ul>
                  <li>
                    <span>Логин:</span>
                    <input type="text" name="user">
                  </li>
                  <li>
                    <span>Пароль:</span>
                    <input type="password" name="pass">
                  </li>
                  <li>
                    <span class="vk_text">Войти через</span>
                    <a id="vk_entries" href="http://api.vk.com/oauth/authorize?client_id=3077966&scope=&redirect_uri=rev-online.biz/login.php?type=auth&response_type=code&display=page">
                      <img style="position: relative; top: 4px;" src="/images/button 2.png">
                    </a>
                  </li>
                </ul>
                <div class="remember">
                  <label>
                    Запомнить 
                    <input type="checkbox" name="remember">
                  </label>
                </div>
                <div id="recovery_link" class="recovery_link control">Забыли пароль?</div>
                <div id="l_login_btn" class="control">Вход</div>
                <div id="l_registration_btn" class="l_registration_btn control">Регистрация</div>
              </form>


собственно то что на данный момент есть из кода

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$url = "http://сайт_регистрация/index.php";
$referer = "http://сайт_куда_перейти после регистрации/radio.php";
$user_agent = 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.62 Version/11.01';
$post = "username=myname&password=mypassword";
$header [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$header [] = "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8";
$header [] = "Accept-Charset: Windows-1251, utf-8, *;q=0.1";
$header [] = "Accept-Encoding: deflate, identity, *;q=0";
 
 
$user_cookie = "cookies.txt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
curl_close($ch);
 
echo $result;
в конечном результате меня перебрасывает на сам сайт без регистрации.
Что я не так делаю?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2013, 16:06
Ответы с готовыми решениями:

Автоматическая авторизация curl, Не могу авторизоваться на rbkmoney
Добрый день, помогите с авторизацией. Никак не выходит. Данные для кабинета рабочие, но от левого аккаунта. $strUrl =...

Автоматическая регистрация на сайте
Добрый день Уважаемые знатоки прошу Вашей помощи так как сам уже не могу справиться. Суть проблемы такова . Есть сайт мне...

Автоматическая регистрация на сайте
Добрый день Уважаемые знатоки прошу Вашей помощи так как сам уже не могу справиться. Суть проблемы такова . Есть сайт мне...

18
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.11.2013, 16:19
Цитата Сообщение от Freekazoid Посмотреть сообщение
<input type="text" name="user">
Цитата Сообщение от Freekazoid Посмотреть сообщение
$post = "username=myname
С паролем аналогично
1
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
24.11.2013, 18:07  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
С паролем аналогично
Спасибо исправил

PHP
1
$post = "user=пользователь&pass=пароль";
но так и не заработало

Добавлено через 1 час 32 минуты
просмотрел авторизацию через Fiddler

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST http://сайтпароль/index.php?action=login HTTP/1.1
Host: имя сервера
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Content-Length: 45
Accept: text/html, */*; q=0.01
Origin: http://имя сервера
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://сайт перенаправление/index.php?tm=&ret=%2Fcity.php
Accept-Language: ru-RU
Accept-Encoding: gzip, deflate
Cookie: 
Connection: keep-alive
Connection: keep-alive
 
login=пользователь&password=пароль&remember=false
немогу понять что не так вроде все также заполнил
0
112 / 93 / 15
Регистрация: 03.10.2012
Сообщений: 315
27.11.2013, 12:29
Вполне вероятно, что срабатывает защита от авторизации ботами. Для начала откройте в браузере Firebug на вкладке Cookies, и посмотрите, какие куки ставит сайт при обычном посещении формы дял авторизации, и какие куки появляются после прохождения авторизации.

Как вариант, вам в скрипте сначала нужно просто постучаться на страницу с формой авторизации, собрать куки, которые сайт вам поставит. И уже потом с этими куками отправлять POST запрос с логином и паролем
1
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
28.11.2013, 19:51  [ТС]
такой вопрос вот я парсил страницу. Загрузилась в мой див смотрю код все как и на сервере но у меня не действует js и поэтому авторизация через curl не проходит.
Можно как то задействовать js скрипты ?
0
 Аватар для KPOT_KZ
10 / 10 / 1
Регистрация: 08.06.2011
Сообщений: 98
29.11.2013, 08:51
Даже если через JS, он так шлет. Там все равно POST и GET запросы.
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
30.11.2013, 17:06
Цитата Сообщение от KPOT_KZ Посмотреть сообщение
Даже если через JS, он так шлет. Там все равно POST и GET запросы.
При помощи js могут добавляться какие-то дополнительные ключи для антиспама.
0
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
30.11.2013, 19:52  [ТС]
Цитата Сообщение от nonamez123 Посмотреть сообщение
При помощи js могут добавляться какие-то дополнительные ключи для антиспама.
Вопрос немного в другом можно ли через CURL передать на js команду и обновить CURL запрос с новым внутренним кодом страницы!
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
30.11.2013, 21:07
Цитата Сообщение от Freekazoid Посмотреть сообщение
Вопрос немного в другом можно ли через CURL передать на js команду и обновить CURL запрос с новым внутренним кодом страницы!
теоретически да, практически это тонны кода, ибо тебе нужно скачать html с прилегающеми к нему скриптами, запустить js у себя, спарсить результат и вернуть обратно.
0
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
30.11.2013, 21:24  [ТС]
Цитата Сообщение от nonamez123 Посмотреть сообщение
теоретически да, практически это тонны кода, ибо тебе нужно скачать html с прилегающеми к нему скриптами, запустить js у себя, спарсить результат и вернуть обратно.
я думал в том же направление и забрал все js к себе но у меня застой не могу запустить js скрипт что бы получить доступ к регистрации

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
 $('#r_login_btn').live('click', function() {
        if ($('#login_form').length > 0) {
                $('#registration_form').hide();
                $('#registration_form').hide();
                $('#r_registration_btn').hide();
                $('#r_login_btn').hide();
                $('#login_form').show();
                $('#l_login_form').show();
                $('#l_registration_form').show();
                forgot_password_btn.show();
                block_reposition();
        }
получается что js скрывает форму входа и не дает провести регистрацию
вот не знаю как сделать запрос для курл на запрос но нельзя обновлять страницу
или же через курл получить код послать запрос на показ формы входа и продолжить загрузку курл с новым кодом страници. Но незнаю как это реализовать.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
30.11.2013, 21:31
используйте нечто наподобие watir+selenium/nokogiri.. Правда, не знаю, как обстоят дела с этим в php, не интересовался

Добавлено через 32 секунды
ну или "только вручную, только хардкор!"
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
30.11.2013, 21:36
[QUOTE=Freekazoid;5416232]я думал в том же направление и забрал все js к себе но у меня застой не могу запустить js скрипт что бы получить доступ к регистрации

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
 $('#r_login_btn').live('click', function() {
        if ($('#login_form').length > 0) {
                $('#registration_form').hide();
                $('#registration_form').hide();
                $('#r_registration_btn').hide();
                $('#r_login_btn').hide();
                $('#login_form').show();
                $('#l_login_form').show();
                $('#l_registration_form').show();
                forgot_password_btn.show();
                block_reposition();
        }
Данный скрипт нечего опасного не делает, ибо он просто меняет display:none на displaye:block. Вот только последняя функция звучит заманчиво: block_reposition. Попробуй её поковырять.
0
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
30.11.2013, 21:39  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
используйте нечто наподобие watir+selenium/nokogiri.. Правда, не знаю, как обстоят дела с этим в php, не интересовался

Добавлено через 32 секунды
ну или "только вручную, только хардкор!"

по запросу watir+selenium/nokogiri.. нашел это http://habrahabr.ru/post/109835/ оно ли ?

а вручную непонятно как. использую Fiddler но немогу понять там идет запрос в уже готовую форму но как дойти до нее
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
30.11.2013, 21:40
оно. Только ватир - гем для рубина
0
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
30.11.2013, 21:45  [ТС]
а если просто в запарсенный код дописать недостающий код и отправить форму так может заработать!

Добавлено через 3 минуты
nonamez123,
Скрипт безопасен но защита от дураков самая эффективная!
скрипт просто скрывает форму! авторизации.
JavaScript
1
2
3
4
function e()
 {
 document.getElementById('l_login_btn').click();
 }
можно нажать ее автоматом но код не приходит от CSS и форма необновляется а просто исчезает!
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
30.11.2013, 21:45
Цитата Сообщение от Freekazoid Посмотреть сообщение
а если просто в запарсенный код дописать недостающий код и отправить форму так может заработать!

Добавлено через 3 минуты
nonamez123,
Скрипт безопасен но защита от дураков самая эффективная!
скрипт просто скрывает форму! авторизации.
JavaScript
1
2
3
4
function e()
 {
 document.getElementById('l_login_btn').click();
 }
можно нажать ее автоматом но код не приходит от CSS и форма необновляется а просто исчезает!
читай мой предыдущий пост внимательнее.
0
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
30.11.2013, 21:52  [ТС]
Цитата Сообщение от nonamez123 Посмотреть сообщение
читай мой предыдущий пост внимательнее.
JavaScript
1
2
3
4
 function block_reposition() {
        $('.form').css({
            'marginTop' : ($('.form').children('.block:visible').outerHeight() / 2) * (-1)
        });
фонкция показывания\скрытия формы
Если можно более прозрачно говорите.

не потеме посмотри тут поковыряй это или почитай о том!
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
30.11.2013, 21:56
Цитата Сообщение от Freekazoid Посмотреть сообщение
JavaScript
1
2
3
4
 function block_reposition() {
        $('.form').css({
            'marginTop' : ($('.form').children('.block:visible').outerHeight() / 2) * (-1)
        });
фонкция показывания\скрытия формы
Если можно более прозрачно говорите.

не потеме посмотри тут поковыряй это или почитай о том!
ну так значит с формой никаких проблем не должно быть. Может там где-то в другом месте что-то. Я к примеру после загрузки сайта ставил таймаут на 3 секунды и в каждую форму добавлял определённое скрытое поле, без которого не принимал данных. Этот мелкий js код вообще никак не был связан с формой. Я бы посоветовал ещё раз тщательно сравнить запрос, который уходит на сервер сам и который ты отсылаешь, может что упустил.
0
9 / 9 / 1
Регистрация: 07.09.2013
Сообщений: 96
30.11.2013, 22:16  [ТС]
Цитата Сообщение от nonamez123
Я к примеру после загрузки сайта ставил таймаут на 3 секунды и в каждую форму добавлял определённое скрытое поле, без которого не принимал данных.
а как это можно реализовать

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$cookie = "C:/WebServers/home/test1.ru/www/cookie.txt"; 
 
// вход в систему
// имя хоста, куда будем заходить
$hostname = 'www.сайт.ru';
 
// инициализация cURL
$ch = curl_init('http://'.$hostname.'/index.php');
curl_setopt($ch, CURLOPT_PROXY, '77.50.220.92:8080');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// получать заголовки
curl_setopt ($ch, CURLOPT_HEADER, 1); 
// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
// елси проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:
curl_setopt ($ch, CURLOPT_REFERER, 'http://'.$hostname.'/index.php');
// использовать метод POST
 
curl_setopt ($ch, CURLOPT_POST, 1);
// сохранять информацию Cookie в файл, чтобы потом можно было ее использовать
curl_setopt ($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_TIMEOUT, 3);
// передаем поля формы
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'user=subman&pass=n3115854&remember=false&mod=Login');
// возвращать результат работы
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".$result."\n";
//echo $result;
// закрыть сессию работы с cURL
А так же использую js для нажатия на кнопку
JavaScript
1
2
3
4
function e()
 {
 document.getElementById('l_login_btn').click();
 }
но страница обновляется а там пустая страница!!!

Добавлено через 10 минут
GET http://rev-online.biz/index.php?action=login_form HTTP/1.1
Host: rev-online.biz
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28
Accept: text/html, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Referer: http://rev-online.biz/
Cookie: __utma=197514028.1028347095.1376217428.1 383552800.1385655779.4; __utmz=197514028.1376217428.1.1.utmcsr=( direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=0jgk8t1apt0a67blncru3s96e2
а это то что мне показывает Fiddler скарее я не втоий последовательности делаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2013, 22:16
Помогаю со студенческими работами здесь

Автоматическая регистрация на сайте
Неделю назад замечена сильная нагрузка на сайт, нагрузка на БД достигала 4000 вместо стандартных 100. Начали появляться новые пользователи...

Автоматическая регистрация классов в С++
Приветствую! Собственно потребовалась реализация базового класса который бы, автоматический регистрировал классы наследники для...

Автоматическая регистрация ACTIVEX
Всем привет. Написал собственный компонент ACTIVEX, зарегистрировал, вставляю в программу - всё нормально работает. Но вот беда!!! Переношу...

Автоматическая регистрация на сайте по открытию приложения
Давно пользуюсь Делфи, но как то не приходилось сталкиватся с работой браузера. Есть сайт с игрой http://www.ganjawars.ru/login.php ...

Автоматическая регистрация почтового ящика в домене от Яндекса
Уважаемые форумчане! У меня в Яндексе зарегистрирована почта для домена emiit.ru, плюс имеется файл на 600 с лихвой человек, на каждого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru