成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python 模擬京東登錄

894974231 / 2117人閱讀

摘要:實(shí)現(xiàn)根據(jù)上面的分析我們只需要通過(guò)代碼發(fā)送一個(gè)請(qǐng)求,并且?guī)舷鄬?duì)應(yīng)的參數(shù)就可以實(shí)現(xiàn)登錄了。請(qǐng)輸入驗(yàn)證碼登錄功能正在趕來(lái)的路上,敬請(qǐng)期待。。。加入購(gòu)物車成功請(qǐng)輸入京東賬號(hào)請(qǐng)輸入京東密碼登錄成功登錄失敗項(xiàng)目地址模擬京東登錄吐槽群

Python模擬京東登錄 分析登錄的網(wǎng)絡(luò)請(qǐng)求

打開(kāi)https://passport.jd.com/new/login.aspx,打開(kāi)瀏覽器的調(diào)試面板,然后,輸入賬號(hào)密碼 =>> 登錄,然后看調(diào)試面板上面的Network捕捉到的網(wǎng)絡(luò)請(qǐng)求,如下圖:

根據(jù)上面的圖片,我們可以知道,在我們點(diǎn)擊完登錄按鈕之后,瀏覽器發(fā)送了一個(gè)POST請(qǐng)求到https://passport.jd.com/uc/loginService,然后在請(qǐng)求頭上面帶上了一些基本的參數(shù),最重要的有三個(gè),一個(gè)是cookie,一個(gè)是Referer,還有一個(gè)是User-Agent。不要問(wèn)我為何重要,我只是知道登錄需要帶上-_-||
然后,再看看請(qǐng)求所需要的參數(shù),這里面有兩部分,一個(gè)是Query Params

uuid:6a9ffffda4-1819-4819-a888-b59301f83a59
ReturnUrl:https://item.jd.com/5089239.html
r: 0.2520828231526894
version: 2015

另一個(gè)是Form Data

uuid:6a9ffffda4-1819-4819-a888-b59301f83a59
eid:F37T4YRBOPZZ6JSEGDA7WH2VCIETQY…J23JGCTD3IM4TMK44Y5ATOTO6G4SM
fp:87783198d64a9aa25b3f0b28b152b094
_t:_t
loginType:f
loginname:[email protected]
nloginpwd:P+TbkVGbhhhC4DFlZ7y4az8j/Y1QYw…h(huán)0qs8+bKp7UbHeGWF1KEMrQUG5po=
chkRememberMe:    
authcode:
pubKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD…woanQq+CA6agNkqly2H4j6wIDAQAB
sa_token: B68C442BE645754F33277E70120805…8EF504D2CD67D7341B8BFBA47FFA5

上面的參數(shù)里面,基本可以在頁(yè)面上面可以找到

其中:ReturnUrl是登錄成功后返回的頁(yè)面,authcode是圖片驗(yàn)證碼,本例子上面不需要輸入驗(yàn)證碼。

Python實(shí)現(xiàn)

根據(jù)上面的分析我們只需要通過(guò)代碼發(fā)送一個(gè)post請(qǐng)求,并且?guī)舷鄬?duì)應(yīng)的參數(shù)就可以實(shí)現(xiàn)登錄了。所有的參數(shù),我們都可以輕而易舉地獲取,唯一的困難是cookie,但是,Pythonrequests庫(kù)給我們提供了會(huì)話機(jī)制,也就是requests.Session(),因此,具體的實(shí)現(xiàn)過(guò)程可以如代碼所示

完整代碼
# -*- 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("需要驗(yàn)證碼。。。")
            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("請(qǐng)輸入驗(yàn)證碼:")
        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("功能正在趕來(lái)的路上,敬請(qǐng)期待。。。")
        pass


def handle():
    print("*************** 菜單列表 **************")
    print("1、搶購(gòu)")
    print("2、加入購(gòu)物車")
    num = input("請(qǐng)輸入功能編號(hào):")
    if num == "1":
        print("搶購(gòu)功能正在趕來(lái)的路上,敬請(qǐng)期待。。。")
    else:
        print("加入購(gòu)物車功能正在趕來(lái)的路上,敬請(qǐng)期待。。。")
        # print("加入購(gòu)物車成功!?。?)
    pass


username = input("請(qǐng)輸入京東賬號(hào):")
password = input("請(qǐng)輸入京東密碼:")
jd = JD(username, password)
result = jd.login()
if result.get("success"):
    print("登錄成功")
    handle()
else:
    print("登錄失敗")

項(xiàng)目地址: 模擬京東登錄

吐槽QQ群: 173318043

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44476.html

相關(guān)文章

  • Python 爬蟲之模擬登陸CSND

    摘要:它也會(huì)在同一個(gè)實(shí)例發(fā)出的所有請(qǐng)求之間保持,期間使用的功能。而主要是方便解析源碼,從中獲取請(qǐng)求需要的一些參數(shù)完整代碼請(qǐng)輸入賬號(hào)請(qǐng)輸入密碼項(xiàng)目地址模擬京東登錄吐槽群 Python 爬蟲之模擬登陸CSND 工具 基本的腳本語(yǔ)言是Python,雖然不敢說(shuō)是最好的語(yǔ)言,至少是最好的之一(0.0),用模擬登陸,我們需要用到多個(gè)模塊,如下: requests BeautifulSoup requ...

    firim 評(píng)論0 收藏0
  • 23個(gè)Python爬蟲開(kāi)源項(xiàng)目代碼,包含微信、淘寶、豆瓣、知乎、微博等

    摘要:今天為大家整理了個(gè)爬蟲項(xiàng)目。地址新浪微博爬蟲主要爬取新浪微博用戶的個(gè)人信息微博信息粉絲和關(guān)注。代碼獲取新浪微博進(jìn)行登錄,可通過(guò)多賬號(hào)登錄來(lái)防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...

    jlanglang 評(píng)論0 收藏0
  • Python 爬取CSDN的極客頭條

    摘要:爬取的極客頭條工具分析使用瀏覽器調(diào)試面板分析網(wǎng)頁(yè)結(jié)構(gòu)以及網(wǎng)絡(luò)請(qǐng)求,容易知道,每一個(gè)頭條信息結(jié)構(gòu)如圖所示因此,我們可以通過(guò)定位元素,同時(shí),根據(jù)面板的網(wǎng)絡(luò)請(qǐng)求分析,第一次加載更多數(shù)據(jù)的請(qǐng)求為第二次的為上述請(qǐng)求已精簡(jiǎn),刪除了原有請(qǐng)求的部分參數(shù) Python 爬取CSDN的極客頭條 工具 Python Python:requests Python:BeautifulSoup 分析 使用瀏覽...

    CatalpaFlat 評(píng)論0 收藏0
  • 趁著雙11,寫個(gè)京東商品自動(dòng)下單

    摘要:項(xiàng)目地址求個(gè)在現(xiàn)在,商家一年不賣貨,雙賣出一年的貨是大家都知道的事實(shí)了,總得來(lái)說(shuō)調(diào)一調(diào)蚊子腿的價(jià)格,聊勝于無(wú),但是也會(huì)有些神價(jià)格會(huì)出現(xiàn),這時(shí)候買到就是賺到本來(lái)是想趁著雙組臺(tái)電腦,買個(gè)的板套裝,沒(méi)想到京東的一直是無(wú)貨的狀態(tài),這幾天有貨了,價(jià)格 項(xiàng)目地址 求個(gè) star 在現(xiàn)在,商家一年不賣貨,雙11賣出一年的貨是大家都知道的事實(shí)了,總得來(lái)說(shuō)調(diào)一調(diào)蚊子腿的價(jià)格,聊勝于無(wú),但是也會(huì)有些神價(jià)格...

    Labradors 評(píng)論0 收藏0
  • 首次公開(kāi),整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<