Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> как получить изменённую скриптами страницу?
Altai  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 38382
На форуме: 3 года, 2 месяца, 12 дней
Карма:




Пытаюсь написать парсер сайта fl.ru используя библиотеку curl, для этого мне нужно авторизоваться. Раньше получалось без проблем - отправил методом post логин, пароль и hidden поле - и авторизация прошла. Но потом на сайте ввели token поле, которое создаётся уже после генерации страницы с помощью javascript. Как мне получить с помощью curl библиотеки страницу, на которой сработали уже все скрипты?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1770
Пользователь №: 20757
На форуме: 6 лет, 11 месяцев, 20 дней
Карма: 185




Цитата (Altai @ 6.11.2015 - 05:01)
Как мне получить с помощью curl библиотеки страницу, на которой сработали уже все скрипты?

Никак.
Смотри откуда берется токен (где его получает js) и бери его там же.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Altai  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 38382
На форуме: 3 года, 2 месяца, 12 дней
Карма:




Цитата (kaww @ 6.11.2015 - 09:15)
Никак.
Смотри откуда берется токен (где его получает js) и бери его там же.

Ну в принципе логично, но у меня возник другой вопрос - а можно как-то подключить к уже полученной странице свой скрипт, который отработает на этой уже полученной странице и аяксом пошлёт мне нужные данные?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1770
Пользователь №: 20757
На форуме: 6 лет, 11 месяцев, 20 дней
Карма: 185




Тут речь уже про браузер, верно? http://stackoverflow.com/questions/9413737...t-in-javascript
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Altai  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 38382
На форуме: 3 года, 2 месяца, 12 дней
Карма:




Цитата (kaww @ 6.11.2015 - 10:58)
Тут речь уже про браузер, верно? http://stackoverflow.com/questions/9413737...t-in-javascript

Нет, речь про то, можно ли как-то с помощью curl послать на страницу свой контент, в данном случае в виде своего скрипта. Ну т.е. после того, как мы получили с помощью curl страницу, на ней автоматически запускается наш скрипт, посланный на неё вместе с запросом (по крайней мере я так себе это представляю), который получает нужную нам информацию и с помощью ajax отправляет её нам. Как-то так..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Altai  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 38382
На форуме: 3 года, 2 месяца, 12 дней
Карма:




Вопрос решен, всем спасибо за внимание wink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sapphire08  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 42237
На форуме: 1 год, 1 месяц, 11 дней
Карма:




Цитата (Altai @ 7.11.2015 - 20:27)
Вопрос решен, всем спасибо за внимание ;)

Ну кто ж так делает, ну хоть бы написали решение, в чем была проблема..
Вот столкнулся с тем, что был у меня скрипт который с полгода назад отлично работал (проходил авторизацию на fl.ru), а сейчас - ни в какую.

Беру со страницы u-token, отправляю все необходимые параметры POST запросом (action=login&autologin=1, а так же пароль, логин), куки сохраняются (т.е. при каждой новой загрузке токен один и тот же), явных ошибок нет, но страница упорно загружается неавторизованной (главная).

В чем беда, никак не пойму.
Включал запись лога CURLOPT_STDERR в файл, там все проходит отлично, параметры отправляются...
Что ж делать-то? :unsure:

Вот код, проверьте кто-нибудь, по-возможности, пожалуйста:
include_once('simple_html_dom.php');

$cl = curl_init();
$email = 'example@email.com';

curl_setopt($cl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0");
curl_setopt($cl, CURLOPT_VERBOSE, true);
$verbose = fopen('logs/curl_fl.txt', 'w+');
curl_setopt($cl, CURLOPT_STDERR, $verbose);

//Загружаем страницу первый раз для получения токена
curl_setopt($cl, CURLOPT_URL, 'https://www.fl.ru');
curl_setopt($cl, CURLOPT_REFERER, 'https://www.fl.ru/');
curl_setopt($cl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($cl, CURLOPT_HEADER,1);
curl_setopt($cl, CURLOPT_TIMEOUT, 10);
curl_setopt($cl, CURLOPT_COOKIEJAR, 'cookies/cookie_fl.txt');
curl_setopt($cl, CURLOPT_COOKIEFILE, 'cookies/cookie_fl.txt');
curl_setopt($cl, CURLOPT_POSTREDIR, 3);
curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, 0);

$data = curl_exec($cl);

$html = str_get_html($data);

$scripts = $html->find("script");
foreach ($scripts as $script){
preg_match("/_TOKEN_KEY\s+=\s+\'\w+\'/", htmlentities($script->innertext), $res1);
if (!empty($res1)) break;
}
$res1 = explode('=',$res1[0]);
$token = str_replace(array(' ','\''),"",$res1[1]);

curl_setopt($cl, CURLOPT_POST, 1);
curl_setopt($cl, CURLOPT_POSTFIELDS, 'https://www.fl.ru/login&action=login&autologin=1&login='.urlencode($email).'&passwd=******&u_token_key='.$token);

$data = curl_exec($cl);
curl_close($cl);

echo $data;


Это сообщение отредактировал sapphire08 - 11.12.2015 - 16:36
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26054
Пользователь №: 21350
На форуме: 6 лет, 10 месяцев, 8 дней
Карма: 727

Не курю:
1 год, 3 месяца, 25 дней


sapphire08
люди мучались - рыскали по форумами - пробовали - делали и сделали.

а тут Вася какой-то зашёл и обиделся на всех.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sapphire08  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 42237
На форуме: 1 год, 1 месяц, 11 дней
Карма:




Цитата (Игорь_Vasinsky @ 11.12.2015 - 16:19)
sapphire08
люди мучались - рыскали по форумами - пробовали - делали и сделали.

а тут Вася какой-то зашёл и обиделся на всех.

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

Только сразу не додумался код прикрепить, пока редактировал сообщение, вы уже успели отметиться своим оскорблением.

Я понимаю, что в интернете, на форуме, незнакомые люди - никто никому ничем не обязан, но тем не менее, помогают. Я вежливо попросил совета, тем более кому-то это тоже может быть актуально. Поделился своим результатом.
Свою желчь оставляйте, пожалуйста, при себе. Надеюсь здесь присутствуют более доброжелательные форумчане.

Это сообщение отредактировал sapphire08 - 11.12.2015 - 16:35
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26054
Пользователь №: 21350
На форуме: 6 лет, 10 месяцев, 8 дней
Карма: 727

Не курю:
1 год, 3 месяца, 25 дней


Цитата
Уважаемый,

какой я тебе уважаемый, тем более в пятницу biggrin.gif

вот если ты просто написал: а как решили то?

но ты же написал так - как будто тебе должны.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Цитата (sapphire08 @ 11.12.2015 - 15:32)
Надеюсь здесь присутствуют более доброжелательные форумчане.

Полно, но у каждого свои критические дни недели))
У Васи(нского) например сегодня (пьяный уже наверно в зюзю) biggrin.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26054
Пользователь №: 21350
На форуме: 6 лет, 10 месяцев, 8 дней
Карма: 727

Не курю:
1 год, 3 месяца, 25 дней


Valick
не, я тока планирую, но на работе день обосрали + загадили 2 оставшиеся недели.

Цитата
вы уже успели отметиться своим оскорблением.

ну ты мне можешь на слово поверить -я даже не начинал.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Игорь_Vasinsky, давай нахами мне в личку, сбрось камень с души biggrin.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26054
Пользователь №: 21350
На форуме: 6 лет, 10 месяцев, 8 дней
Карма: 727

Не курю:
1 год, 3 месяца, 25 дней


Valick
да я и здесь не побрезгую. повод нужен.
провоцируй ёпта biggrin.gif


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Altai  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 38382
На форуме: 3 года, 2 месяца, 12 дней
Карма:




sapphire08
Мне на другом форуме дали рабочий авторизатор. Вот код:


<?php
define("SITE", 'https://www.fl.ru');
define("LOGIN", '');
define("PASSWORD", '');

/* получаем сессию */
$result = getURL(SITE);
$cookie = $result['set_cookie'];
/* формируем post запрос */
$post = array(
'autologin' => '1',
'login' => LOGIN,
'passwd' => PASSWORD,
'u_token_key' => preg_replace('/(^.+TOKEN_KEY = \')(\w+)(\'.+$)/s', '$2', $result['content']) // получаем TOKEN_KEY
);
/* авторизуемся */
$result = getURL(SITE . '/login/', $cookie, $post);
/* сохраняем полученные куки, для последующих запросов на сайт... */
$cookie = $result['set_cookie'];

/* для наглядности успешной авторизации - выводим в браузер страницу с проектами */
echo iconv('CP1251', 'UTF-8', $result['content']); // [можно убрать]


function getURL($url, $cookie = false, $post = false, $timeout = 30, $maxRedirs = 3)
{
$ch = curl_init();
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3";
$header[] = "Pragma: ";
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if ($cookie) {
if (is_array($cookie)) {
foreach($cookie as $key => $value ) {
$cookieString[] = "{$key}={$value}";
};
$cookie = implode('; ', $cookieString);
}
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
if ($post){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$content = curl_exec($ch);
$response = curl_getinfo($ch);
curl_close ($ch);
if ($content) {
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $content, $match);
$setCookie = array();
if ($match[1]) {
foreach($match[1] as $setCookieString) {
parse_str($setCookieString, $setCookieUnit);
$setCookie = array_merge($setCookie, $setCookieUnit);
}
$cookie = is_array($cookie) ? array_merge($cookie, $setCookie) : $setCookie;
}
}

if (($response['http_code'] == 301 || $response['http_code'] == 302) AND $maxRedirs)
if ($response['redirect_url'])
return getURL($response['redirect_url'], $cookie, $post, $timeout, --$maxRedirs);
if ($content) {
return array(
'set_cookie' => $cookie,
'response' => $response,
'content' => $content
);
} else
return
false;
}
?>


Только что проверил, всё работает
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса