Как найти свой токен на сайте

Всем доброго времени суток!
На сайте платежного шлюза при запросе расчета комиссии отправление с карты на карту, отправляются следующие данные: sPan, rPan, amount и собственно говоря токен. Вопрос в следующем, каким образом его можно получить/сгенерировать и тд. Попробовал поискать в коде страницы, но там совершено другой токен. Заранее извинюсь за глупый вопрос, если он таковым покажется.
P.S Скриншоты для наглядности:
Токен в коде страницы:
введите сюда описание изображения

Токен в запросе:
введите сюда описание изображения

задан 18 июн 2020 в 17:27

UserAgent122's user avatar

2

Во вкладке Initator ( чуть правее Headers, которая на скрине ) есть стек скриптов, придеться используя breakpoints или logpoint пройти до места где генерируеться этот токен, но путь этот может быть тернист и сложен =)

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

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

ответ дан 18 июн 2020 в 18:01

lijil's user avatar

lijillijil

3321 серебряный знак6 бронзовых знаков

2

В общем это мой первый код,столкнулся с проблемой,что на сайте где мне нужна авторизация есть csrf токен
Строка в HTML выглядит так:

<meta name="csrf-token" content="LEHb0gOOweqUBc6dBfMmqAW5VN9y9tTXEep1AGIhsL1OMYyfQvqtvtlu-MdKhm3nbcktiiagnockvgBjGm3jzw==">

мне нужно эту строку с токеном найти в моем коде и вставить

import requests
from bs4 import BeautifulSoup






file = open('1.txt').read().split('n')



url = 'https://fastmoney.ru/auth/login'


headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

session = requests.Session()
session.headers.update(headers)


r = session.get(url)
soup = BeautifulSoup(r.content, 'html.parser')


csrf = soup.find('meta', {'name': 'csrf-token'})['content']



for account in file:
	username = account.split(":")[0]
	password = account.split(":")[1]

	resp = requests.post(url, data = {'_csrf': csrf, 'LoginForm[login]': username, 'LoginForm[password]': password,})

Первый раз занимаюсь этим,поэтому не бейте сильно.Думаю для знающих будет очень просто помочь мне)

Данный раздел демонстрирует получение авторизационного токенa приложениями.

Примечание. Рекомендации для различных типов приложений (настольное, мобильное и др.) приведены в руководстве по OAuth-авторизации.

При регистрации или редактировании параметров приложения на OAuth-сервере Яндекса необходимо в поле Callback URI указать URL скрипта, выполняющего получение токена. Например:

 http://site.ru/get_token.php

Код скрипта приведен ниже.

При запросе токена требуется указывать идентификатор и пароль приложения, сгенерированные при регистрации на OAuth-сервере.

  1. Приложение перенаправляет пользователя по ссылке вида

    https://oauth.yandex.ru/authorize?response_type=code&client_id=<идентификатор_приложения>

    На открывшейся странице пользователь нажимает кнопку Разрешить.

  2. OAuth-сервер Яндекса осуществляет редирект на адрес из Callback URI. При этом к адресу добавляется параметр code. Например:

     http://site.ru/get_token.php?code=<код_подтверждения>
  3. Скрипт выполняет POST-запрос на https://oauth.yandex.ru/token, передавая следующие параметры:

    • grant_type = authorization_code

    • code = <код_подтверждения>

    • client_id = <идентификатор_приложения>

    • client_secret = <пароль_приложения>

  4. OAuth-сервер передает ответ в формате JSON. Ключ access_token содержит OAuth-токен. Например:

    {"access_token": "ea135929105c4f29a0f5117d2960926f"}

    Полученный токен необходимо сохранить и использовать в запросах к API Директа.

# -*- coding: utf-8 -*-
from bottle import route, run, request
import httplib
import urllib
import json

#Идентификатор приложения
client_id = 'YOUR_CLIENT_ID'
#Пароль приложения
client_secret = 'YOUR_CLIENT_SECRET'

@route('/')
def index():
    #Если скрипт был вызван с указанием параметра "code" в URL,
    #то выполняется запрос на получение токена
    if request.query.get('code'):
        #Формирование параметров (тела) POST-запроса с указанием кода подтверждения
        query = {
            'grant_type': 'authorization_code',
            'code': request.query.get('code'),
            'client_id': client_id,
            'client_secret': client_secret,
        }
        query = urllib.urlencode(query)

        #Формирование заголовков POST-запроса
        header = {
            'Content-Type': 'application/x-www-form-urlencoded'
        }

        #Выполнение POST-запроса и вывод результата
        connection = httplib.HTTPSConnection('oauth.yandex.ru')
        connection.request('POST', '/token', query, header)
        response = connection.getresponse()
        result = response.read()
        connection.close()
        
        #Токен необходимо сохранить для использования в запросах к API Директа
        return json.loads(result)['access_token']


#Запускаем веб-сервер
run(host='localhost', port=80, quiet=True)

<?php
// Идентификатор приложения
$client_id = 'YOUR_CLIENT_ID'; 
// Пароль приложения
$client_secret = 'YOUR_CLIENT_SECRET';

// Если скрипт был вызван с указанием параметра "code" в URL,
// то выполняется запрос на получение токена
if (isset($_GET['code']))
  {
    // Формирование параметров (тела) POST-запроса с указанием кода подтверждения
    $query = array(
      'grant_type' => 'authorization_code',
      'code' => $_GET['code'],
      'client_id' => $client_id,
      'client_secret' => $client_secret
    );
    $query = http_build_query($query);

    // Формирование заголовков POST-запроса
    $header = "Content-type: application/x-www-form-urlencoded";

    // Выполнение POST-запроса и вывод результата
    $opts = array('http' =>
      array(
      'method'  => 'POST',
      'header'  => $header,
      'content' => $query
      ) 
    );
    $context = stream_context_create($opts);
    $result = file_get_contents('https://oauth.yandex.ru/token', false, $context);
    $result = json_decode($result);

    // Токен необходимо сохранить для использования в запросах к API Директа
    echo $result->access_token;
  }
?>

Если нужна помощь в настройке веб-аналитики на сайте, обращайтесь. Мои услуги здесь.

Прежде чем работать с API какого-либо интернет-сервиса, нужно получить специальный ключ, его еще называют токен. 

Это уникальное текстовое значение, которое выдается каждому пользователю, для возможности им подтвердить, что это именно он соединяется с API и что у него есть на это право. 

Если у нас есть токен, то мы имеем полный доступ к тому приложению, к которому обращаемся и можем там делать все, что угодно. 

Поэтому, существует такая мера безопасности и прежде чем работать с API, нужно получить специальный токен.

Яндекс.Метрика не является исключением и, чтобы начать работать с ее API, нам нужно получить этот самый токен.

Как же его можно получить?

Чтобы это сделать, нужно выполнить 2 шага.

1 шаг. Переходим по адресу:

oauth.yandex.ru

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

Приложение – это условный мини-аккаунт, с помощью которого вы можете получить этот токен и в дальнейшем им пользоваться. 

Жмем на “Зарегистрировать новое приложение” подробнее см. видео.

Указываем название приложения. 

В разделе Платформы – выбираем веб-сервисы и выбираем подставить URL для разработки.

Спускаемся ниже и ставим галочки в разделе Яндекс Метрика. 

После этого нажимаем на кнопку “Создать приложение”. 

Когда оно будет создано, вы получите ID приложения.

Шаг 2. Открываем новую вкладку и переходим по адресу:

https://oauth.yandex.ru/authorize?response_type=token&client_id=XXXXXX

В этот адрес вам нужно вместо XXXXXX подставить ID вашего приложения, которое вы только что создали. 

Остается только нажать на “Разрешить” и мы получаем тот самый токен, который нам нужен. Скопируйте его в надежное место, в дальнейшем он вам еще понадобиться.

Такая процедура получения токена в системе Яндекс Метрика. 

Если хотите продолжить знакомиться с API Яндекс Метрики, жмите на Содержание или Далее.

Если нужна помощь в настройке веб-аналитики на сайте, обращайтесь. Мои услуги здесь.

Токен не существует сам по себе, а выдается приложению от имени чьего-то аккаунта в Яндексе. Таким образом владелец аккаунта разрешает этому приложению доступ к определенным операциям со своим аккаунтом. Токен является реализацией такого разрешения.

1. Регистрируем приложение

Заполняем форму на https://oauth.yandex.ru/client/new. Обязательно сделать следующее:

  • указать название приложения (например, “watches.ru site engine”)
  • в разделе Callback URI нажать “Подставить URL для разработки”, в поле возникнет адрес от Яндекса
  • среди доступов найти нужный раздел (например, для Яндекс.Маркета и Беру.ру это Яндекс.Маркет).

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

В дальнейшем доступ к этим данным осуществляется по адресу https://oauth.yandex.ru/client/<id приложения>. Страница будет доступна только тому аккаунту, от имени которого было создано приложение (создать приложения без аккаунта в Яндексе нельзя).

2. Разрешаем приложению доступ – получаем токен

  • Заходим на Яндекс с учетной записью пользователя, к аккаунту которого приложение должно запросить доступ.
    (Он может отличаться от аккаунта, из-под которого было создано приложение, но может и совпадать.)

  • Взять идентификтор приложения, подставить его в адрес
    https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения>
    и открыть страницу. Нажать Разрешить.

  • Прямо на странице будет отображен новый токен. Его нужно куда-то сохранить, т.к. как его посмотреть потом – пока неизвестно.
    А в адресе в параметре expires – время жизни в секундах (например, для приложения с доступом к Яндекс.Маркету это один год).

Эти процедуры подробно описаны здесь: https://tech.yandex.ru/oauth/doc/dg/tasks/get-oauth-token-docpage/

3. Отправляем токен с HTTP-запросами

В состав запросов токен включается с помощью заголовка Authorization: Oauth, куда входит также идентификатор приложения:

Authorization: OAuth oauth_token="авторизационный_токен", oauth_client_id="идентификатор_приложения"

См. https://yandex.ru/dev/market/partner-marketplace-cd/doc/dg/concepts/authorization-docpage/

Добавить комментарий