Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Roserio
16 / 16 / 13
Регистрация: 06.08.2015
Сообщений: 61
#1

Авторизация Python requests

13.01.2016, 09:22. Просмотров 2290. Ответов 5
Метки нет (Все метки)

День добрый. Появилась задача авторизации на timeweb.ru через Python requests, но никак не получается. Опыта нет вообще, 2 дня голову ломаю.
Python
1
2
>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
не выходит
Python
1
2
3
>>> from requests.auth import HTTPDigestAuth
>>> url = 'http://httpbin.org/digest-auth/auth/user/pass'
>>> requests.get(url, auth=HTTPDigestAuth('user', 'pass'))
Тоже не помогает



Вот мой кусочек кода, логин и пароль можно использовать!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from requests import *
from requests.auth import HTTPDigestAuth
s = requests.Session()
headers = {'User-Agent': 'Mozilla/10.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
data = {"LoginForm[username]":"ci91199",
            "LoginForm[password]":"tST1wx1hRRkn"}
url = "https://hosting.timeweb.ru/login"
r = s.post(url,   data=data)
s.cookies
g = requests.post('https://hosting.timeweb.ru',cookies= s.cookies, headers= s.headers, data=data) 
# доп проверка
 
print(r.status_code)
print(r.url)
print(g.status_code)
print(g.url)
Вывод:
400
https://hosting.timeweb.ru/login
200
https://hosting.timeweb.ru/login
Я понимаю что бывалых такой вопрос выводит из себя, но что я делаю не так?
Может неправильно использую куки? Если да то как правильно.

Quickstart по requests
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 09:22
Ответы с готовыми решениями:

Авторизация, requests, form
Добрый день. Очень нужна помощь - собираюсь попарсить сайт и не могу пройти...

Python функция requests.get()
добрый день! У меня проблема с этой функцией на мак оси . requests.get(url)...

Javascript и requests в python
День добрый. Проблема такая. Решил написать программу для автоматизации...

Python SWF requests
Здравствуйте! Мне очень нужна ваша помощь. Дело в том, что есть некоторые...

Авторизация на vbulletin используя requests
Добрый вечер. Хочу сделать авторизацию на форуме используя requests,...

5
Xero201
64 / 62 / 19
Регистрация: 27.12.2008
Сообщений: 212
13.01.2016, 17:22 #2
Лучший ответ Сообщение было отмечено Roserio как решение

Решение

Цитата Сообщение от Roserio Посмотреть сообщение
Может неправильно использую куки? Если да то как правильно.
Можно смотреть через какой-нибудь firebug заголовки запросов, когда авторизуешься, и подгонять под них куки и хедеры. Например

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
import requests
 
url_login = r'https://hosting.timeweb.ru/login'
url_main = r'https://hosting.timeweb.ru'
 
payload = {
    'LoginForm[username]': 'ci91199',
    'LoginForm[password]': 'tST1wx1hRRkn',
}
 
headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'Connection': 'keep-alive',
    'Host': 'hosting.timeweb.ru',
    'X-Requested-With': 'XMLHttpRequest'
}
 
 
r = requests.post(url_login, data=payload, headers=headers)
 
cookies = r.cookies.get_dict()
cookies['_identity_hosting'] = 'df0fc8bda049e5a8153084d6bf3e040af258179c5e68b49276f445b7acbc9537a%3A2%3A%7Bi%3A0%3Bs%3A17%3A%22_identity_hosting%22%3Bi%3A1%3Bs%3A58%3A%22%5B%22ci91199%22%2C%22e8d68688-ef73-4b01-bf6f-b2a245770b56%22%2C2592000%5D%22%3B%7D'
 
r2 = requests.get(url_main, cookies=cookies, headers=headers)
 
print(r2.status_code)
print(r2.url)
print(r2.text)
Либо пользоваться каким-нибудь эмулятором браузера (например, mechanize), или реальный браузер (например, selenium)
1
Roserio
16 / 16 / 13
Регистрация: 06.08.2015
Сообщений: 61
14.01.2016, 04:48  [ТС] #3
Дружище это гениально! Спасибо огромное.
Один вопрос:
Python
1
cookies = r.cookies.get_dict()
Это что такое?
дословно перевел как 'В качестве аргумента принимает дополнительный домен и путь и возвращает старый добрый Питон словарь пар " имя-значение куки, которые отвечают требованиям.'
А это вообще не понятно.Из firebag берется?
Python
1
cookies['_identity_hosting'] = 'df0f...
0
Jironimo
0 / 0 / 0
Регистрация: 14.08.2014
Сообщений: 10
14.01.2016, 04:52 #4
url_main = r'https://hosting.timeweb.ru'
'LoginForm[username]': 'ci91199',
'LoginForm[password]': 'tST1wx1hRRkn',

Учетка существующая..
0
Roserio
16 / 16 / 13
Регистрация: 06.08.2015
Сообщений: 61
14.01.2016, 06:17  [ТС] #5
Да, я знаю

Добавлено через 42 минуты
Python
1
cookies['_identity_hosting'] = 'df0f..
Так это кука и ее значение... с этим разобрался.
не пойму только r' в переменно url_login что делает.
0
Xero201
64 / 62 / 19
Регистрация: 27.12.2008
Сообщений: 212
14.01.2016, 15:16 #6
Roserio, всегда пожалуйста
Цитата Сообщение от Roserio Посмотреть сообщение
дословно перевел как 'В качестве аргумента принимает дополнительный домен и путь и возвращает старый добрый Питон словарь пар " имя-значение куки, которые отвечают требованиям.'
вот это чтоль?)
"""Takes as an argument an optional domain and path and returns a plain
old Python dict of name-value pairs of cookies that meet the
requirements."""
Да не загонялся бы так) Но вообщем все верно, вместо реальных куков с их техническим мусором, получаем данные в виде обычного словаря (ключ: значение). Так удобней смотреть. С _identity_hosting я смухлевал, потому что он не пришел в моем варианте запроса, но теперь ты уже нехило прошарился, так что и сам подшаманишь, если захочешь.

r'строка' - тут не обязательна, просто у меня уже было, даже не заметил.
0
14.01.2016, 15:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2016, 15:16

Про POST запросы в библиотеке requests python
Пишу программу на Python, для загрузки платежных документов на сайт ...

Использование по import requests. ImportError: No module named requests
Приветствую, начну с того, что я самый новый новичек и код который написан...

Вход в ВК requests
Не заходит. Пишет 400 Bad Request import re import requests def loginVK():...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru