簡單獲取cookies模擬登入
阿新 • • 發佈:2019-01-06
1,獲取網站的cookies並儲存到本地,利用本地cookies模擬登入
from http.cookiejar import CookieJar ,LWPCookieJar from urllib.request import Request ,urlopen ,HTTPCookieProcessor ,build_opener from urllib.parse import urlencode # 模擬登陸美食傑---------------------------------- cookie = LWPCookieJar(filename='meishi123123.txt') cookie_handler = HTTPCookieProcessor(cookie) opener = build_opener(cookie_handler) headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0' } # 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F' post_url = 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fi.meishi.cc%2Flogin.php%3Fac%3Dzhuce' # urlencode對url當中的引數進行編碼 # quote 對url當中的中文進行編碼 # urlencode()編碼的物件為字典型別 # quote 編碼的物件為字串 post_data = urlencode({ 'username':'
[email protected]', 'password':'shuai123' }).encode('utf-8') # 請求url 並傳參 設定編碼方式 response = opener.open(post_url,post_data) cookie.save(ignore_discard=True , ignore_expires=True)#上面建立一個儲存cookies的空檔案,這裡進行儲存 # 利用登陸獲取的cookie來請求美食傑首頁 cookie = LWPCookieJar() cookie.load('meishi123123.txt',ignore_expires=True ,ignore_discard=True) opener = build_opener(HTTPCookieProcessor(cookie)) headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0' } requset =Request('https://www.meishij.net/',headers=headers) response = opener.open(requset) print(response.read().decode())
方式二
from http.cookiejar import CookieJar ,LWPCookieJar from urllib.request import Request ,urlopen ,HTTPCookieProcessor ,build_opener from urllib.parse import urlencode def get_cookie_from_network(): from selenium import webdriver url_login = 'http://login.weibo.cn/login/' driver = webdriver.PhantomJS() driver.get(url_login) driver.find_element_by_xpath('//input[@type="text"]').send_keys('your_weibo_accout') # 改成你的微博賬號 driver.find_element_by_xpath('//input[@type="password"]').send_keys('your_weibo_password') # 改成你的微博密碼 driver.find_element_by_xpath('//input[@type="submit"]').click() # 點選登入 # 獲得 cookie資訊 cookie_list = driver.get_cookies() print cookie_list cookie_dict = {} for cookie in cookie_list: #寫入檔案 f = open(cookie['name']+'.weibo','w') pickle.dump(cookie, f) f.close() if cookie.has_key('name') and cookie.has_key('value'): cookie_dict[cookie['name']] = cookie['value'] return cookie_dict
例項3.模擬登入人人網
from urllib.request import requset
from http.cookiejar import CookieJar
from urllib import parse
# 1.登入
# 1.1建立一個cookiejar物件
cookiejar=cookiejar()
# 1.2使用cookie建立一個HTTPCookieProcess物件
handler=request.HTTPCookieProcessor(cookiejar)
# 1.3使用上一部建立的handler建立opener
opener=request.build_opener(handler)
# 1.4使用opener傳送登入的請求(需要人人網的郵箱和密碼)
headers={
"User-Agent":"",
}
data={
'email':'',
'password':'',
}
login_url=""
req=request.Request(login_url,data=parse.urlencode(data),headers=headers)
requset.urlopen(req)
# 2.訪問個人主頁
zhuye_url='http://'#要訪問的主頁url
#獲取主頁頁面的時候,不要新建一個opener
#因該使用之前的那個opener,之前的那個opener已經包含了
#登陸需要的cookie資訊
result=opener.open(zhuye_url)
#寫入文字
with open('renren.html','w',encoding='utf-8') as fp:
fp.write(resp.read().decode('utf-8'))