Уведомления

Группа в Telegram: @pythonsu

#1 Июль 25, 2017 12:34:00

artexcite
Зарегистрирован: 2017-07-07
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests

Добрый день.
Нужна помощь по отправки 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)

Офлайн

#2 Июль 25, 2017 12:53:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests

Сначала проанализируй трафик, который передаётся во время нажатия на кнопку.
Тут писал, как анализировать.



Офлайн

#3 Июль 26, 2017 10:57:45

artexcite
Зарегистрирован: 2017-07-07
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests

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

Отредактировано artexcite (Июль 26, 2017 11:55:12)

Офлайн

#4 Июль 26, 2017 13:39:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests

artexcite
а точнее URL этой страницы
http://localhost/?code=31d5af7b703aebcb877666&state=custom
Что-то ты не то нашёл. localhost - это ты сам, оно не будет ходить в Интернет.
Сама строка эта в виде адреса может не считаться адресом и не использоваться как адрес, а передаваться как просто строковой параметр, как строка, которая похожа на адрес.



Отредактировано py.user.next (Июль 26, 2017 13:41:56)

Офлайн

#5 Июль 26, 2017 23:44:15

artexcite
Зарегистрирован: 2017-07-07
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests

Попробую объяснить по-другому.
Многие сайты используют 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.

Офлайн

#6 Окт. 17, 2017 12:19:22

Danila
Зарегистрирован: 2017-10-17
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь по отправки html формы, где кнопка в виде ссылки используя модуль requests

artexcite
Скажите, вы нашли решение своего вопроса?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version