Форум сайта python.su
0
Всем привет!
Пытаюсь с помощью библиотеки Requests авторизоваться на одном сайте.
Передаю post-параметры:
params = { 'login':'%CC%F3%F5%E0', 'password':'123456qwerty'} r2 = requests.post('http://www.******.ru/login/', data=params, headers=header2, allow_redirects=False, cookies=r.cookies, proxies=proxies)
Отредактировано theyoba (Окт. 9, 2012 23:57:38)
Офлайн
173
Нужно передавать исходную строку, requests сам закодирует
params = { 'login': '\xcc\xf3\xf5\xe0', ...
params = { 'login': u'Муха', ...
Офлайн
14
Если нужна сессия - используй session.cookies=r.cookies
Офлайн
0
reclosedev
Если авторизаоваться на том сайте самому, через браузер, в качестве логина передается почему-то %CC%F3%F5%E0.
Если делать через utf-8, то передается в следующем виде:
login=%D0%9C%D1%83%D1%85%D0%B0
params = { 'login': '\xcc\xf3\xf5\xe0', ...

Офлайн
14
Вот пример сессии
import requests with requests.session() as s: resp = s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') print resp.text print resp.cookies resp = s.get('http://httpbin.org/cookies/set/sessioncooki/1') print resp.text print resp.cookies resp = s.get('http://httpbin.org/cookies') print resp.text print resp.cookies
s=requests.session() s.get(...)
Офлайн
0
odnochlenТак я же и смотрю через Fiddler2
Посмотри сниффером, что на самом деле отправляется.
theyoba
Если делать через utf-8, то передается в следующем виде:Еслиlogin=%D0%9C%D1%83%D1%85%D0%B0то очень долго идет запрос post, а потом выдается следующая ошибкаparams = { 'login': '\xcc\xf3\xf5\xe0', ...
Отредактировано theyoba (Окт. 10, 2012 23:38:10)
Офлайн
14
theyobaТак он вообще ничего не отправляет или как?
то очень долго идет запрос post, а потом выдается следующая ошибка
requests.post('http://www.******.ru/login/', data = { 'login': u'Муха'.decode('cp1251'), #... }, allow_redirects=False)
Офлайн
0
odnochlenК сожалению, почему-то преобразует “Муху” в иероглифы
хехехе, нашел

Офлайн
14
А ты в исходнике ничего не напортил? УМВР. Кодировка указана?
Офлайн
0
odnochlen
В notepad++ посмотрел - преобразовано в UTF-8 без BOM.
в начале исходника прописано
# -*- coding: utf-8 -*-
Из-за этого программа дальше не выполняется и запрос не идет 

Офлайн