[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация на сервере liveinternet
Страницы: 1, 2
Владимир55
Рапортую.

1. Мой браузер показал rnd:2120683026 Это значение я внес в массив $form. Туда же внес домен и пароль.

2. Вместо 'http://google.com' тоже указал свой сайт (так надо или или нет?)

3. Раскомментировал $content, чтобы посмотреть.

4. Удаление куки закомментировал для начала, чтобы её увидеть.

Что получилось:

1. Кука отсутствует, вообще нет этого файла..

2. Появилась форма ввода пароля, в кодах которой имеет место быть:

<form method=post>
<input
type=hidden name=rnd value="2136950292">


И что теперь со всем этим делать?
walerus
Цитата (rooor @ 23.10.2014 - 17:17)
Цитата
Вот посмотрите - у меня так:

а кнопочку "ОК" вы нажимали с открытым дебагером? =)

Видимо нет ), т.к. поля в дебагере пустые, дебагер открыли ПОСЛЕ загрузки страницы, что в корне НЕ верно )
walerus
Владимир55 Давайте действовать последовательно, а не как Вам захотелось. Я написал - "Вам осталось найти поле - rnd "динамически" и подставлять его значение в форму.", это означает, что поле rnd, нужно получить ДО отправления формы и не ручками, как Вы это сделали, а скриптом !

Блин, до чего же народ пошел невнимательный и ленивый (((.
<?php

$cookie_filename = 'cookies.dat';

$curl = curl_init();
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_TIMEOUT, 30 );
curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1' );
curl_setopt( $curl, CURLOPT_COOKIEFILE, $cookie_filename );
curl_setopt( $curl, CURLOPT_COOKIEJAR, $cookie_filename );
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 1 );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $curl, CURLOPT_REFERER, 'http://google.com' );
curl_setopt( $curl, CURLOPT_URL, 'http://www.liveinternet.ru/stat/' );
curl_setopt( $curl, CURLOPT_HEADER, false);

$content = curl_exec($curl);

// echo $content; // тут будет страница авторизации, в которой нужно найти нужные нам поля или поле

## Регулярка, которая ДИНАМИЧЕСКИ находит поле `rnd`

preg_match( '~<input type=hidden name=rnd value="(.*)">~iUs', $content, $match_rnd );
if ( isset( $match_rnd[1] ) && trim( $match_rnd[1] ) != '' )
$rnd_id = trim( $match_rnd[1] );
else
die( 'Not find RND field ((.' );

// нам нужны поля, самый минимум
/*
rnd=2122070073
url=
http://asd // НУЖНО УКАЗАТЬ СВОЙ САЙТ
password=123123 // НУЖНО УКАЗАТЬ СВОЙ САЙТ
ok= OK
*/

## после этого нужно отправить форму авторизации

$form = array(
'rnd' => $rnd_id, // здесь должно быть указано число, которое мы отпарсим на главной странице
'url' => 'http://asd', // НУЖНО УКАЗАТЬ СВОЙ САЙТ
'password' => '123123', // НУЖНО УКАЗАТЬ СВОЙ ПАРОЛЬ ОТ САЙТА
'ok' => 'OK',
);


curl_setopt( $curl, CURLOPT_REFERER, 'http://www.liveinternet.ru/stat/' );
curl_setopt( $curl, CURLOPT_URL, 'http://www.liveinternet.ru/stat/' );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $form );
curl_setopt( $curl, CURLOPT_HEADER, false);
$content = curl_exec($curl);

echo $content; // тут будет страница ПОСЛЕ авторизации, в которой будут данные

curl_close( $curl ); // закрываем курл
@unlink( $cookie_filename ); // Удаляем куку

посмотрите что изменилось и как находится скрытая форма, которая нам так была нужна, все очень просто, если чуть пораскинуть мозгами.

Мне интересно что теперь с этим будете делать дальше <_<
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.