session = requests.session()
url = "https://dbo.albank.ru/rich/auth"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:45.0) Gecko/20100101 Firefox/45.0'} #иначе ошибка 403
session.get(url, headers=headers)
data = {'j_username': 'aimdich', 'j_password': '123456'}
with requests.Session() as session: session.post(url, json=data)
если я делаю так, то получаю ошибку 403, а не 302 как должно быть в случае ошибочного пароля. Как я правильно понимаю это как-то связано с куками, хотя вроде когда происходит session.get куки должны записаться в сессии и когда происходит session.post они должны сами передаться сайту. В общем, завтра покопаюсь в теме. А так прошел по ссылке на альфабанк, сперва подумал что у меня с браузером что то нето, потом понял что особо не заморачивались с подразделом для API)
Влад Григорьев, спасибо, публичного апи у своего банка не нашел. Единственное что я пока смог понять - стоит система isimple bank, авторизация происходит через spring security. Попытался через F12 в браузере кое-что понять. Когда заполняю логин пароль и нажимаю войти происходит отправка Request Headers:
POST /j_spring_security_check HTTP/1.1
Host: dbo.albank.ru
Connection: keep-alive
Content-Length: 32
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: https://dbo.albank.ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 YaBrowser/21.2.3.100 Yowser/2.5 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://dbo.albank.ru/rich/auth
Accept-Encoding: gzip, deflate, br
Accept-Language: ru,en;q=0.9
Cookie: session-cookie=166d216c9491c792552781d580267f93b027587923ad258bf10c8c7e1eafe7037dad14941bd2d4407d4a2e74c488d92a; localize=ru; KFP_DID=38fe93b4-30fc-b4e7-30cb-c61996e55805; KFP_SESSION_ID=8a9eef53-ee34-4736-9d29-46d109b3f33e_1; JSESSIONID=CA153502E8E0147FCC261ADCAC802433; oxxfgh=8a9eef53-ee34-4736-9d29-46d109b3f33e#3#1800000#5000 Form Data:
j_username=drew&j_password=12345
так как я отправлял для проверки заведомо неправильные данные то я конечно получил в ответ: Responce Headers:
HTTP/1.1 302
Content-Length: 0
Connection: keep-alive
Set-Cookie: JSESSIONID=52FB8D286F2D7539CE43E8978E82C56C; Path=/; HttpOnly
Location: /rich/auth?login_error=1
Date: Wed, 17 Mar 2021 13:46:18 GMT
Я не до конца понял используются ли тут токены или нет, а пока пытаюсь так:
import requests
data = 'j_username=drew&j_password=12345' #вроде такую конструкцию логин пароль туда он отправляет
Url = 'https://dbo.albank.ru/rich/auth' #ссылка на сайт
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:45.0) Gecko/20100101 Firefox/45.0'} #пускай думают что я эппл
r = requests.post(Url, headers = headers, json = data) #отправка запроса на сайт
print(r.status_code)
я правильно понимаю, что самая главная задача ООП - она должна упрощать разработку сложной длинной программы и ее изменение, обновление. И в моем случае когда нужно лишь вести контроль поголовья, экономические расходы и доходы, наверное проще будет без объектов. База данных, структуры, функции для доступа, вывода, вычислений - этого думаю хватит.
ну я потому и спросил, эти функции пример с книги самоучителя по ассемблеру. Я конечно же прогуглил первым делом прогуглил int 10 функцию 0E и заметил что у нее нет возвращаемого значения, она просто выводит в консоль. Почему столько пушов, попов делают в примере с книги - я не понял и был бы рад если вы объясните.
jcmvbkbc, спасибо, теперь уже понятнее стало. И я правильно понимаю так как код выполнения и стековые данные лежат в одной программной памяти, можно столько записать в стек что перезапишется область кода? И поэтому контроль перезаполнения стека должен реализовать сам программист. И вроде не все ж контроллеры имеют оперативную память, соответственно возможна следующая ситуация - допустим у меня есть сейф с парой лимонов и с кодовым замком на базе микроконтроллера, клавиатуры и реле.
И если я приделаю к микроконтроллеру клавиатуру для получения кода от пользователя и напрямую запихаю все эти полученные данные в стек то возможно ситуация что пользователь может взять и хакнуть микроконтроллер методом "переполнения буфера" и открыть мой сейф?) хотя наверное это уж очень сложна)
а как же принцип стека - "последний зашел, первый вышел"? Это ж получается тогда не стек, а массив какой-то. Я еще не дошел до темы про чтение из стека со смещением) пока в моих примерах попы да пушы)
ну я имел ввиду не почту России, а процесс отправки товара с Китая до почты нашей) У меня в Харбине пред посылка застряла аж 3 месяца, заказывал шторы для окна.
import requests
session = requests.session()
url = "https://dbo.albank.ru/rich/auth"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:45.0) Gecko/20100101 Firefox/45.0'} #иначе ошибка 403
session.get(url, headers=headers)
data = {'j_username': 'aimdich', 'j_password': '123456'}
with requests.Session() as session: session.post(url, json=data)
если я делаю так, то получаю ошибку 403, а не 302 как должно быть в случае ошибочного пароля. Как я правильно понимаю это как-то связано с куками, хотя вроде когда происходит session.get куки должны записаться в сессии и когда происходит session.post они должны сами передаться сайту. В общем, завтра покопаюсь в теме. А так прошел по ссылке на альфабанк, сперва подумал что у меня с браузером что то нето, потом понял что особо не заморачивались с подразделом для API)