摘要:實現根據上面的分析我們只需要通過代碼發送一個請求,并且帶上相對應的參數就可以實現登錄了。請輸入驗證碼登錄功能正在趕來的路上,敬請期待。。。加入購物車成功請輸入京東賬號請輸入京東密碼登錄成功登錄失敗項目地址模擬京東登錄吐槽群
Python模擬京東登錄 分析登錄的網絡請求
打開https://passport.jd.com/new/login.aspx,打開瀏覽器的調試面板,然后,輸入賬號密碼 =>> 登錄,然后看調試面板上面的Network捕捉到的網絡請求,如下圖:
根據上面的圖片,我們可以知道,在我們點擊完登錄按鈕之后,瀏覽器發送了一個POST請求到https://passport.jd.com/uc/loginService,然后在請求頭上面帶上了一些基本的參數,最重要的有三個,一個是cookie,一個是Referer,還有一個是User-Agent。不要問我為何重要,我只是知道登錄需要帶上-_-||
然后,再看看請求所需要的參數,這里面有兩部分,一個是Query Params:
uuid:6a9ffffda4-1819-4819-a888-b59301f83a59 ReturnUrl:https://item.jd.com/5089239.html r: 0.2520828231526894 version: 2015
另一個是Form Data:
uuid:6a9ffffda4-1819-4819-a888-b59301f83a59 eid:F37T4YRBOPZZ6JSEGDA7WH2VCIETQY…J23JGCTD3IM4TMK44Y5ATOTO6G4SM fp:87783198d64a9aa25b3f0b28b152b094 _t:_t loginType:f loginname:test@qq.com nloginpwd:P+TbkVGbhhhC4DFlZ7y4az8j/Y1QYw…h0qs8+bKp7UbHeGWF1KEMrQUG5po= chkRememberMe: authcode: pubKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD…woanQq+CA6agNkqly2H4j6wIDAQAB sa_token: B68C442BE645754F33277E70120805…8EF504D2CD67D7341B8BFBA47FFA5
上面的參數里面,基本可以在頁面上面可以找到
其中:ReturnUrl是登錄成功后返回的頁面,authcode是圖片驗證碼,本例子上面不需要輸入驗證碼。
Python實現根據上面的分析我們只需要通過代碼發送一個post請求,并且帶上相對應的參數就可以實現登錄了。所有的參數,我們都可以輕而易舉地獲取,唯一的困難是cookie,但是,Python的requests庫給我們提供了會話機制,也就是requests.Session(),因此,具體的實現過程可以如代碼所示
完整代碼# -*- coding: UTF-8 -*- import json import requests import sys from bs4 import BeautifulSoup s = requests.Session() class JD: def __init__(self, username, password): self.username = username self.password = password self.headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0", "Referer": "https://www.jd.com/" } def get_login_data(self): url = "https://passport.jd.com/new/login.aspx" html = s.get(url, headers=self.headers).content soup = BeautifulSoup(html, "lxml") display = soup.select("#o-authcode")[0].get("style") auth_code = "" if not display: print("需要驗證碼。。。") auth_code_url = soup.select("#JD_Verification1")[0].get("src2") auth_code = self.get_auth_img(auth_code_url) uuid = soup.select("#uuid")[0].get("value") eid = soup.select("#eid")[0].get("value") fp = soup.select("input[name="fp"]")[0].get("value") # session id _t = soup.select("input[name="_t"]")[0].get("value") # token login_type = soup.select("input[name="loginType"]")[0].get("value") pub_key = soup.select("input[name="pubKey"]")[0].get("value") sa_token = soup.select("input[name="sa_token"]")[0].get("value") data = { "uuid": uuid, "eid": eid, "fp": fp, "_t": _t, "loginType": login_type, "loginname": self.username, "nloginpwd": self.password, "chkRememberMe": True, "authcode": "", "pubKey": pub_key, "sa_token": sa_token, "authCode": auth_code } return data def get_auth_img(self, url): auth_code_url = "http:" + url auth_img = s.get(auth_code_url, headers=self.headers) with open(sys.path[0] + "/auth.jpg", "wb") as f: f.write(auth_img.content) code = input("請輸入驗證碼:") return code def login(self): """ 登錄 :return: """ url = "https://passport.jd.com/uc/loginService" data = self.get_login_data() headers = { "Referer": "https://passport.jd.com/uc/login?ltype=logout", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0", "X-Requested-With": "XMLHttpRequest" } content = s.post(url, data=data, headers=headers).text result = json.loads(content[1: -1]) return result def rush(self): print("功能正在趕來的路上,敬請期待。。。") pass def handle(): print("*************** 菜單列表 **************") print("1、搶購") print("2、加入購物車") num = input("請輸入功能編號:") if num == "1": print("搶購功能正在趕來的路上,敬請期待。。。") else: print("加入購物車功能正在趕來的路上,敬請期待。。。") # print("加入購物車成功!!!") pass username = input("請輸入京東賬號:") password = input("請輸入京東密碼:") jd = JD(username, password) result = jd.login() if result.get("success"): print("登錄成功") handle() else: print("登錄失敗")
項目地址: 模擬京東登錄
吐槽QQ群: 173318043
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44476.html
摘要:它也會在同一個實例發出的所有請求之間保持,期間使用的功能。而主要是方便解析源碼,從中獲取請求需要的一些參數完整代碼請輸入賬號請輸入密碼項目地址模擬京東登錄吐槽群 Python 爬蟲之模擬登陸CSND 工具 基本的腳本語言是Python,雖然不敢說是最好的語言,至少是最好的之一(0.0),用模擬登陸,我們需要用到多個模塊,如下: requests BeautifulSoup requ...
摘要:今天為大家整理了個爬蟲項目。地址新浪微博爬蟲主要爬取新浪微博用戶的個人信息微博信息粉絲和關注。代碼獲取新浪微博進行登錄,可通過多賬號登錄來防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...
摘要:爬取的極客頭條工具分析使用瀏覽器調試面板分析網頁結構以及網絡請求,容易知道,每一個頭條信息結構如圖所示因此,我們可以通過定位元素,同時,根據面板的網絡請求分析,第一次加載更多數據的請求為第二次的為上述請求已精簡,刪除了原有請求的部分參數 Python 爬取CSDN的極客頭條 工具 Python Python:requests Python:BeautifulSoup 分析 使用瀏覽...
摘要:項目地址求個在現在,商家一年不賣貨,雙賣出一年的貨是大家都知道的事實了,總得來說調一調蚊子腿的價格,聊勝于無,但是也會有些神價格會出現,這時候買到就是賺到本來是想趁著雙組臺電腦,買個的板套裝,沒想到京東的一直是無貨的狀態,這幾天有貨了,價格 項目地址 求個 star 在現在,商家一年不賣貨,雙11賣出一年的貨是大家都知道的事實了,總得來說調一調蚊子腿的價格,聊勝于無,但是也會有些神價格...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
閱讀 1026·2022-07-19 10:19
閱讀 1801·2021-09-02 15:15
閱讀 1014·2019-08-30 15:53
閱讀 2660·2019-08-30 13:45
閱讀 2658·2019-08-26 13:57
閱讀 1988·2019-08-26 12:13
閱讀 1011·2019-08-26 10:55
閱讀 552·2019-08-26 10:46