Найти - Пользователи
Полная версия: Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests
Начало » Python для новичков » Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests
1
artexcite
Добрый день.
Нужна помощь по отправки html формы. Кнопка на форме не совсем стандартная (см. код формы ниже)
<form action="" method="POST" id="theform">

<a href="" onclick="$('#theform').submit(); return false;">Отправить</a>
</form>
Если бы была кнопка вот такая:
<input name="button" value="Отправить" type="submit">
то тут все просто:
import requests
url = "https://www.superjob.ru/user/login/"
params = {}
headers = {}
data = {
"LoginForm[login]": ваш логин,
"LoginForm[password]": ваш пароль
}
s = requests.Session()
r = s.post(url, params=params, headers=headers, data=data)

py.user.next
Сначала проанализируй трафик, который передаётся во время нажатия на кнопку.
Тут писал, как анализировать.
artexcite
py.user.next
Сначала проанализируй трафик, который передаётся во время нажатия на кнопку.
Тут писал, как анализировать.
Проанализировал HTTP заголовки с использованием HttpFox, в момент нажатия кнопки на форме.
В результате анализа я выявил интересную строку:
POST 301 Redirect (cached) https://www.superjob.ru/authorize/?client_id=668&redirect_uri=http%3A%2F%2Flocalhost%2F&state=custom
GET (Error) NS_ERROR_CONNECTION_REFUSED http://localhost/?code=31d5af7b74ada03aebcb877666&state=custom
Этот GET мне и нужен.

Пробовал
import requests
url = "https://www.superjob.ru/authorize/"
params = {
"client_id": "668",
"redirect_uri": "http://localhost",
"state": "custom"
}
headers = {}
data = {}
r = requests.post(url, params=params, headers=headers, data=data)
r = requests.get(r.url)
Не получатся получить
http://localhost/?code=31d5af7b703aebcb877666&state=custom


Как говорилось выше у меня есть форма
<form action="" method="POST" id="theform">

<a href="" onclick="$('#theform').submit(); return false;">Отправить</a>
</form>
Эта форма находится на странице с URL который показал HttpFox.
https://www.superjob.ru/authorize/?client_id=668&redirect_uri=http%3A%2F%2Flocalhost%2F&state=custom
Вообще если в ручном режиме кликнуть по кнопке на форме, то нас перекинет на другую страницу, которая мне и нужна, а точнее URL этой страницы
http://localhost/?code=31d5af7b703aebcb877666&state=custom
py.user.next
artexcite
а точнее URL этой страницы
http://localhost/?code=31d5af7b703aebcb877666&state=custom
Что-то ты не то нашёл. localhost - это ты сам, оно не будет ходить в Интернет.
Сама строка эта в виде адреса может не считаться адресом и не использоваться как адрес, а передаваться как просто строковой параметр, как строка, которая похожа на адрес.
artexcite
Попробую объяснить по-другому.
Многие сайты используют API и для авторизации используется протокол OAuth2.
Не буду описывать работу этого протокола полностью, т.к. меня интересует только 1 этап, а именно разрешение доступа моего приложения к данным аккаунта. Другими словами, пользователь обращается к моему приложению (чтобы начать им пользоваться), а приложение в ответ спрашивает доступ у пользователя. Если пользователь разрешит доступ, то тогда будет выдан код авторизации, необходимый для получения access token.
Так вот пользователь переходит по ссылке
https://www.superjob.ru/authorize/?client_id=668&redirect_uri=http%3A%2F%2Flocalhost%2F&state=custom
и у него открывается html-страница, имеющая форму
<form action="" method="POST" id="theform">

<a href="" onclick="$('#theform').submit(); return false;">Отправить</a>
</form>
пользователь должен кликнуть по кнопке “Отправить”, после чего его перекинет на html страницу моего приложения, например:
http://мой_сайт.ru?code=31d5af7b703aebcb877666&state=custom
Проблема в следующем: я не могу отправить POST запрос этой формы, используя python и модуль requests.
Danila
artexcite
Скажите, вы нашли решение своего вопроса?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB