2013-09-11 2 views
2

пытается очистить некоторые данные, но сначала мне нужно войти в систему. Я пытаюсь использовать python-requests, и вот мой код до сих пор:python-requests - не может войти в систему

login_url = "https://www.wehelpen.nl/login/" 
users_url = "https://www.wehelpen.nl/ik-zoek-hulp/hulpprofielen/" 
profile_url = "https://www.wehelpen.nl/profiel/01136/hulpvragen/" 

uname = "****" 
pword = "****" 


def main(): 
    s = login(uname, pword, login_url) 
    page = s.get(users_url) 
    print makeUTF8(page.text) # grab html and grep for logged in text to make sure! 


def login(uname, pword, url): 
    s = requests.session() 
    s.get(url, auth=(uname, pword)) 
    csrftoken = s.cookies['csrftoken'] 
    login_data = dict(username=uname, password=pword, 
        csrfmiddlewaretoken=csrftoken, next='/') 
    s.post(url, data=login_data, headers=dict(Referer=url)) 
    return s 


def makeUTF8(text): 
    return text.encode('utf-8') 

В принципе, мне нужно войти в login_url с POST запросом (с использованием csrf маркера, потому что я получаю сообщение об ошибке в противном случае), то с помощью session объект передан с login(), я хочу проверить, что я выполнил вход, сделав запрос GET на страницу пользователя. Когда я получу возврат - page.text, я могу запустить команду grep, чтобы проверить некий href, который говорит мне, что я вошел в систему или нет.

Итак, до сих пор я не могу войти и сохранить рабочий объект сеанса. Может кто-нибудь мне помочь? До сих пор это был самый утомительный опыт питона в моей жизни.

EDIT. Я искал, искал и искал SO для ответов и ничего не работал ...

+0

Можете ли вы показать нам результат запроса POST? –

+0

<Ответ [200]> – lwm

+0

heres полный источник, если кому-то интересно - http://goo.gl/wekFoj – lwm

ответ

0

Есть много вариантов, но у меня был успех, используя cookielib вместо того, чтобы пытаться «вручную» обрабатывать файлы cookie.

import urllib2 
import cookielib 
cookiejar = cookielib.CookieJar() 
cookiejar.clear() 
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) 
# ...etc... 

Некоторые потенциально значимые ответы на получение этого настройки находятся на SO, в том числе: https://stackoverflow.com/a/5826033/1681480

+0

не повезло там ... не может пройти этот материал csrf с cookielib. – lwm

2

Вы должны иметь правильные имена для ключей словаря. Запрос libary использует html имя формы для поиска правильной формы. В вашем случае эти имена являются идентификацией и паролем.

login_data = {'identification'=uname,'password'=pswrd...} 
Смежные вопросы