用python代碼模擬登錄網站


方法一:直接使用已知的cookie訪問

特點:

  簡單,但需要先在瀏覽器登錄

具體步驟:

1.用瀏覽器登錄,獲取瀏覽器里的cookie字符串

  先使用瀏覽器登錄。再打開開發者工具,轉到network選項卡。在左邊的Name一欄找到當前的網址,選擇右邊的Headers選項卡,查看Request Headers,這里包含了該網站頒發給瀏覽器的cookie。對,就是后面的字符串。把它復制下來,一會兒代碼里要用到。

  注意,最好是在運行你的程序前再登錄。如果太早登錄,或是把瀏覽器關了,很可能復制的那個cookie就過期無效了。

 

urllib庫的版本代碼

 1 """
 2 直接獲取 個人中心的頁面
 3 手動粘貼 輔助 pc 抓包的 cookies
 4 放在 request對象的請求頭里面
 5 """
 6 
 7 import urllib.request
 8 
 9 #1 數據url
10 url = "https://www.yaozh.com/member/"
11 #2 添加請求頭
12 headers = {
13     "User-Agent":" Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"
14 ,"Cookie":"acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; PHPSESSID=1rhel4pftt6lbmc6bhtkpjn7u4; yaozh_logintime=1555822916; yaozh_user=734735%09huazaid; yaozh_userId=734735; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0; yaozh_uidhas=1; yaozh_mylogin=1555822922; acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0"
15 }
16 #3 構建請求對象
17 request = urllib.request.Request(url,headers=headers)
18 #4 發送請求對象
19 response = urllib.request.urlopen(request)
20 
21 #5 讀取數據
22 data = response.read()
23 #保存到文件中,驗證數據
24 with open("01cook.html","wb")as f:
25     f.write(data)

 

 

方法二:直接使用賬號密碼登錄訪問

 

退出登錄,按F12 ,再登錄,抓取數據

 

 

formhash和backurl要在登陸之前找




代碼
 1 """
 2   獲取 個人中心的頁面
 3   1.代碼登錄  登錄成功 cookie(有效)
 4   2. 自動帶着cookie 去請求個人中心
 5 
 6   cookiejar  自動保存這個cookie
 7 """
 8 import urllib.request          #請求庫
 9 from http import cookiejar    #保存cookie用的
10 from urllib import parse   #轉譯
11 #登錄之前的, 登錄頁的網址https://www.yaozh.com/login
12 #找登錄參數
13 
14 #后台 根據你發送的請求方式來判斷的 如果你是get(登錄頁面),如果POST(登錄結果)
15 #1.代碼登錄
16     # 1.1 登錄的網址
17 login_url = "https://www.yaozh.com/login"
18 
19 
20     #1.2 登錄的參數
21 login_form_data = {
22     "username": "用戶",
23     "pwd": "密碼",
24     "formhash": "E2F4BF731C",
25     "backurl": "https%3A%2F%2Fwww.yaozh.com%2F",
26 
27 }
28  #1.3 發送登錄請求POST
29 cook_jar = cookiejar.CookieJar()
30 #定義有添加 cook 功能的 處理器
31 cook_hanlder = urllib.request.HTTPCookieProcessor(cook_jar)
32 #根據處理器 生成 opener
33 opener = urllib.request.build_opener(cook_hanlder)
34 
35 #帶着參數 發送post請求
36 #添加請求頭
37 headers = {
38     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"}
39 #1 參數 將來 需要轉譯 轉碼; 2 post 請求的 data 要求是bytes
40 login_str = parse.urlencode(login_form_data).encode('utf-8')
41 login_request = urllib.request.Request(login_url,headers=headers,data=login_str)
42 #如果登錄成功,cookjar自動保存cookie
43 opener.open(login_request)
44 
45 # 2 代碼帶着cookie去訪問 個人中心
46 center_url = "https://www.yaozh.com/member/"
47 center_request = urllib.request.Request(center_url,headers=headers)
48 response = opener.open(center_url)
49 #bytes -->str
50 data = response.read().decode()
51 
52 with open("02cook.html","w",encoding="utf-8")as f:
53     f.write(data)
 
        

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM