Jak używać Pythona do logowania się na stronie internetowej i pobierania plików cookie do późniejszego użycia?
Chcę pobrać i przeanalizować stronę internetową za pomocą Pythona, ale aby uzyskać do niej dostęp, potrzebuję kilku plików cookie. Dlatego muszę najpierw zalogować się przez https do strony internetowej. Moment logowania polega na wysłaniu dwóch PARAMÓW postu (nazwa użytkownika, hasło) do /login.php. Podczas żądania logowania Chcę pobrać pliki cookie z nagłówka odpowiedzi i zapisać je, aby móc je wykorzystać w żądaniu pobrania strony internetowej / danych.php.
Jak mam to zrobić w Pythonie (najlepiej 2.6)? Jeśli to możliwe ja tylko chcesz korzystać z wbudowanych modułów.
2 answers
import urllib, urllib2, cookielib
username = 'myuser'
password = 'mypassword'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()
resp.read()
jest prostym html strony, którą chcesz otworzyć, i możesz użyć opener
, aby wyświetlić dowolną stronę za pomocą pliku cookie sesji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-19 00:40:23
Oto wersja korzystająca z doskonałej biblioteki requests:
from requests import session
payload = {
'action': 'login',
'username': USERNAME,
'password': PASSWORD
}
with session() as c:
c.post('http://example.com/login.php', data=payload)
response = c.get('http://example.com/protected_page.php')
print(response.headers)
print(response.text)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-16 08:59:16