1. 程式人生 > >簡單獲取cookies模擬登入

簡單獲取cookies模擬登入

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'))