Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/242: Рейтинг темы: голосов - 242, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 3

Авторизация в Qiwi с помощью curl

14.07.2013, 23:27. Показов 53194. Ответов 147
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени!

Недавно на Qiwi что-то поправили с авторизацией.
Скрипт перестал работать
две ночи бьюсь - не могу получить нормального ответа от сервера, прилетает
HTTP Status 401 - Authentication Failed:


Подскажите в чем подвох,

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
  error_reporting(E_ALL);
  require_once("../plugins/SimpleHtmlDom/simple_html_dom.php");
  $phone = '********'; //телефон он счета в виде +70000000000
  $password = '********'; //пароль от счета
  $cookie_filename = '/host/sta/cookie.txt';
...
 
  $url = "https://visa.qiwi.com/auth/login.action?source=MENU&login=".rawurlencode($phone)."&password=".rawurlencode($password); 
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_HEADER, 1);
  curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  curl_setopt($curl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10');
  curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename);
  curl_setopt($curl, CURLOPT_COOKIEFILE, $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_SSLVERSION, 3);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);  //возвращать результат только в переменную
 
  //заходим на сайт получаем куки
  curl_setopt($curl, CURLOPT_URL, 'https://visa.qiwi.com/payment/main.action' );
  $page = curl_exec($curl);
print "$url<br>$page";
 
  curl_setopt($curl, CURLOPT_URL, $url);//авторизация
  $page = curl_exec($curl);
print "$url<br>$page";
  curl_close($curl);
  //Открываем страницу отчата по платежам
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_HEADER, 1);
  curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  curl_setopt($curl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10');
  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_SSLVERSION, 3);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);  //возвращать результат только в переменную
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-Requested-With: XMLHttpRequest"));
  curl_setopt($curl, CURLOPT_URL, 'https://visa.qiwi.com/user/report/list.action');
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, "daterange=true&start=$date_start&finish=$date_finish");
  $page = curl_exec($curl);
  $html = str_get_html($page);
...
  $html->clear(); // подчищаем за собой
  unset($html);
  echo "NEW PAYMENT $newcount\n<br>";
  if ($curl_errno!=0){
    echo "==========Errors! ".date("Y-m-d H:i:s")."==========<br>\n";
    $curl_errno = curl_errno($curl);
    $curl_error = curl_error($curl);
    print_r($curl_errno);
    print_r($curl_error);
  }
echo "==========End ".date("Y-m-d H:i:s")."==========<br>\n";
?>
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2013, 23:27
Ответы с готовыми решениями:

CURL авторизация QIWI
Не получается получить страницу. Вроде являюсь авторизованным по Json ответу т.к если задать неверный логин, то в Json ответе так и...

Авторизация через cURL QIWI
Код не работает, выдает ошибку. &lt;?php error_reporting(E_ALL); $USER_LOGIN = &quot;&quot;; $USER_PASSWORD = &quot;&quot;; ...

Авторизация на сайте с помощью CURL срабатывает только после обновления страницы.
написал код для авторизации на wordpress. код при тестировании работает, только при 1 но(!) авторизовывается только при обновлении...

147
0 / 0 / 0
Регистрация: 05.07.2014
Сообщений: 20
14.09.2015, 14:59
Студворк — интернет-сервис помощи студентам
Всем привет, у всех авторизация отвалилась?
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
14.09.2015, 15:19
Я не совсем уверен, но если у тебя авторизация написана на домен .ru то попробуй все на ком сменить
0
0 / 0 / 0
Регистрация: 05.07.2014
Сообщений: 20
14.09.2015, 15:20
у меня .com стоит, до этого ругалась на тикеты а щас и вовсе померла
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
14.09.2015, 15:24
Походу у них технические работы... Так что наверно не стоит волноваться

0
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 3
15.09.2015, 20:02
А вот у меня отвалилась авторизация, как раз за день до их "технических работ" написал и тут на тебе и всё( сейчас ломаю голову как исправить

Добавлено через 36 минут
Вот код:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//  require 'Curl.php';
    include 'simple_html_dom.php';  
  //  use Curl;
    ini_set("max_execution_time", "60");
    $curl = new Curl();
 
    $curl->setOpt(CURLOPT_FOLLOWLOCATION, true);
    $curl->setOpt(CURLOPT_RETURNTRANSFER, true);
    $curl->setOpt(CURLOPT_AUTOREFERER, true);
    $curl->setOpt(CURLOPT_SSL_VERIFYPEER,false);
    $curl->setCookieFile('cookie.txt');
    $curl->setHeader('Content-Type', 'application/json');
    $curl->setHeader('X-Requested-With', 'XMLHttpRequest');
    
 
    $data = array(
        'login' => '**********',
        'password' => '********',
    );  
 
 
    $res = $curl->post('https://auth.qiwi.com/cas/tgts', json_encode($data));
 
    $TICKET = $res->entity->ticket;    
    $data = array(
        "ticket" => $TICKET,
        "service" => "https://auth.qiwi.com/j_spring_cas_security_check",
    );
    echo $TICKET.'<br>';
    $res = $curl->post('https://auth.qiwi.com/cas/sts', json_encode($data));
    
 
    $data = array(
        "ticket" => $TICKET,
        "service" => "https://auth.qiwi.com/j_spring_cas_security_check",
    );   
    
    $res = $curl->post('https://auth.qiwi.com/cas/sts', json_encode($data));
    
    $TICKET = $res->entity->ticket;  
    echo $TICKET.'<br>';    
    $data = array(
        "ticket" => $TICKET,
    );    
    $res = $curl->get('https://qiwi.com/j_spring_cas_security_check?ticket='.$TICKET);    
    $res = $curl->get('https://qiwi.com/main.action');  
    $res = $curl->get('https://auth.qiwi.com/app/proxy?v=1 ');  
    $res = $curl->post('https://qiwi.com/person/state.action'); 
    
    if (isset($res->data->balances->RUB)) {
        echo "Balance  =".$res->data->balances->RUB.'<br>';
       // exit(0);
    } else {
        echo 'Oшибка';
    }   
    $res = $curl->post('https://visa.qiwi.com/report/list.action?type=3');  
    $html = str_get_html($res); 
    echo $html; 
    if(count($html->find('.reports')))
       foreach($html->find('.reports') as $div)
       {
             echo "found";
             //echo $div->innertext;
             $StrParsed = $div->innertext;
       }
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
15.09.2015, 20:43
Попробуй заменить visa.qiwi.com на qiwi.com


И почему подключение Curl закоменчено?
0
0 / 0 / 1
Регистрация: 28.10.2010
Сообщений: 10
15.12.2015, 08:54
На pythone requests реализовать пробую тоже 401 ошибка:
PHP
1
    $res = $curl->get('https://qiwi.com/j_spring_cas_security_check?ticket='.$TICKET);
у меня:
Python
1
    r = s.get('https://qiwi.com/j_spring_cas_security_check?ticket=%s' % ticket, verify=True)
Цитата Сообщение от Explrer Посмотреть сообщение
Попробуй заменить visa.qiwi.com на qiwi.com
Пробовал заменить не помогает(
Алл, кто решил проблему? Подскажите.
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
15.12.2015, 12:54
Цитата Сообщение от roach81 Посмотреть сообщение
На pythone requests реализовать пробую тоже 401 ошибка
Скинь полный код, помогу.
1
0 / 0 / 1
Регистрация: 28.10.2010
Сообщений: 10
15.12.2015, 12:57
Цитата Сообщение от Explrer Посмотреть сообщение
Скинь полный код, помогу.
Спасибо! Разобрался уже. Выше по коду забыл сменить адрес.
Кстате, у Вас в коде два раза выполняется кусок с 24 по 30 строку. У меня работает без второго раза.

Выставление счета сейчас пишу. Там тоже те же грабли?
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
15.12.2015, 13:05
Цитата Сообщение от roach81 Посмотреть сообщение
Спасибо! Разобрался уже. Выше по коду забыл сменить адрес.
Кстате, у Вас в коде два раза выполняется кусок с 24 по 30 строку. У меня работает без второго раза.

Выставление счета сейчас пишу. Там тоже те же грабли?
На сколько помню в выставлении счетов все просто
0
0 / 0 / 1
Регистрация: 28.10.2010
Сообщений: 10
15.12.2015, 13:12
Цитата Сообщение от Explrer Посмотреть сообщение
На сколько помню в выставлении счетов все просто
Постю сюда: https://qiwi.com/user/order/create.action, отдает форму с инпутом token, беру его, а дальше что?
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
15.12.2015, 16:59
Цитата Сообщение от roach81 Посмотреть сообщение
Постю сюда: https://qiwi.com/user/order/create.action, отдает форму с инпутом token, беру его, а дальше что?
Берешь токен добавляешь в пост данные и снова отправляешь пост запросом - все
0
0 / 0 / 1
Регистрация: 28.10.2010
Сообщений: 10
15.12.2015, 17:01
Цитата Сообщение от Explrer Посмотреть сообщение
Берешь токен добавляешь в пост данные и снова отправляешь пост запросом - все
пробовал не получается, снова форму возвращает с токеном новым, покажи что у тебя постится?

Добавлено через 16 секунд
Цитата Сообщение от Explrer Посмотреть сообщение
Берешь токен добавляешь в пост данные и снова отправляешь пост запросом - все
пробовал не получается, снова форму возвращает с токеном новым, покажи что у тебя постится?
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
15.12.2015, 19:42
Цитата Сообщение от roach81 Посмотреть сообщение
пробовал не получается, снова форму возвращает с токеном новым, покажи что у тебя постится?

Добавлено через 16 секунд

пробовал не получается, снова форму возвращает с токеном новым, покажи что у тебя постится?
Почему то я думаю что у тебя проблема в том, что ты не сделал после авторизации вот это)

PHP
1
$curl->get('https://qiwi.com/transfer/order.action');
0
0 / 0 / 1
Регистрация: 28.10.2010
Сообщений: 10
16.12.2015, 11:10
Цитата Сообщение от Explrer Посмотреть сообщение
Почему то я думаю что у тебя проблема в том, что ты не сделал после авторизации вот это)
Сделал это тоже не помогает. Вот мой код:

Python
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import requests
from bs4 import BeautifulSoup
import json
import ast
 
data = json.dumps(
    dict(
        login='login',
        password='password',
    ))
 
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
    'Content-Type': 'application/json',
    'X-Requested-With': 'XMLHttpRequest',
}
s = requests.Session()
s.headers = headers
 
r = s.post('https://auth.qiwi.com/cas/tgts', data=data)
print('tgts', r.status_code)
ticket = ast.literal_eval(r.text)['entity']['ticket']
 
 
data = json.dumps(
    dict(
        ticket=ticket,
        service='https://qiwi.com/j_spring_cas_security_check'
    ))
 
r = s.post('https://auth.qiwi.com/cas/sts', data=data)
print('sts', r.status_code)
ticket = ast.literal_eval(r.text)['entity']['ticket']
 
r = s.get('https://qiwi.com/j_spring_cas_security_check?ticket=%s' % ticket)
print('check_ticket', r.status_code)
 
r = s.get('https://qiwi.com/payment/order/list.action')
print('list_action', r.status_code)
 
r = s.get('https://qiwi.com/transfer/order.action')
print('order_action', r.status_code)
 
# crate action
 
to = '+799999999999'
value = '55'
change = '55'
currency = 'RUB'
comment = 'asdasd'
 
data = (
    dict(to=to, value=value, currency=currency, comment=comment, amount=value+'.'+change))
 
r = s.post('https://qiwi.com/user/order/create.action', data=json.dumps(data))
soup = BeautifulSoup(r.text, 'html.parser')
token = soup.find('input', attrs=dict(name='token')).get('value')
print('token', token)
data['token'] = token
r = s.post('https://qiwi.com/user/order/create.action', data=json.dumps(data))
print(r.text)
Вот что выдает:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
tgts 201
sts 200
check_ticket 200
list_action 200
order_action 200
token -8218102776613287568
 
<div data-widget='token' data-params='{"url":"/user/order/create.action"}'>
    <form method="post">
        <input type="hidden" name="token" value="4725992021909664989"/>
        
    </form>
</div>
0
 Аватар для Explrer
11 / 11 / 2
Регистрация: 02.10.2014
Сообщений: 43
16.12.2015, 13:43
Цитата Сообщение от roach81 Посмотреть сообщение
Сделал это тоже не помогает
Для выписки счета все запросы должны отправляться как application/x-www-form-urlencoded
0
-7 / 1 / 0
Регистрация: 06.01.2015
Сообщений: 59
28.01.2016, 00:14
Снова QIWI мается ерундой. Сменили алгоритм переводы денег на другой киви кошелек. Поправил уже кто это дело? Со старым кодом чет проблемы на последнем этапе, когда подтверждаешь операцию аргументами token=*state=PAY
0
 Аватар для webog
1 / 1 / 0
Регистрация: 12.07.2011
Сообщений: 68
28.01.2016, 00:17
Цитата Сообщение от yankeenoobs Посмотреть сообщение
Снова QIWI мается ерундой. Сменили алгоритм переводы денег на другой киви кошелек. Поправил уже кто это дело? Со старым кодом чет проблемы на последнем этапе, когда подтверждаешь операцию аргументами token=*state=PAY
У меня вообще никакого кода нет
0
-7 / 1 / 0
Регистрация: 06.01.2015
Сообщений: 59
28.01.2016, 00:18
А какой тогда тебе смысл в этой теме отвечать?)
0
 Аватар для webog
1 / 1 / 0
Регистрация: 12.07.2011
Сообщений: 68
28.01.2016, 00:21
Цитата Сообщение от yankeenoobs Посмотреть сообщение
А какой тогда тебе смысл в этой теме отвечать?)
Ищу код/скрипт/класс который работает с Qiwi.

P.S. +подписан на тему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.01.2016, 00:21

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу написать запрос, который будет авторизировать пользователя на...

Авторизация на qiwi
Добрый день, прошу помощи, не могу авторизироватся на qiwi, вот код $USER_LOGIN = &quot;XXXX&quot;; $USER_PASSWORD = &quot;XXXX&quot;; ...

Авторизация curl
Всем добрый день! Возникла проблема, мне нужно проверять данные на сайте, чтобы их посмотреть нужно авторизоваться, можно ли как то 1...

Curl авторизация
Здравствуйте подскажите как через курл сделать авторизацию на сайте? Отправляем на сайт для авторизации такие вот значения: ...

CURL авторизация
Здравствуйте. Хотел сделать парсер баланса с teasernet.com с помощью cURL но не работает авторизация почему то. Вот код класса: &lt;? ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru