<noframes id="hvfzz">

<noframes id="hvfzz"><form id="hvfzz"><th id="hvfzz"></th></form>

        <address id="hvfzz"><th id="hvfzz"><th id="hvfzz"></th></th></address><address id="hvfzz"><address id="hvfzz"></address></address>

        鍍金池/ 問答/數據分析&挖掘  Python/ 模擬登陸csdn失敗,幫忙看下哪里有問題

        模擬登陸csdn失敗,幫忙看下哪里有問題

        從圖中得知表單需要哪些數據
        938215-20160809204500793-1563778880.png

        下面的兩行代碼保存cookies

        session = requests.Session()
        response = session.get(url, headers=headers).content

        下面的代碼獲取表單所需數據

        soup = BeautifulSoup(response, "lxml")
        # 解析頁面獲取表單必須的數據
        lt = soup.find(attrs={"type": "hidden", "name": "lt"})['value']
        execution = soup.find(attrs={"type": "hidden", "name": "execution"})['value']
        event_id = soup.find(attrs={"type": "hidden", "name": "_eventId"})['value']

        最后還是登錄失敗


        下面是完整代碼

        import requests
        from bs4 import BeautifulSoup
        
        url = 'https://passport.csdn.net/account/login'
        
        headers = {
                "Host": "passport.csdn.net",
                "Referer": "https://passport.csdn.net/account/login",
                "User-Agent": 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89'
                              ' Safari/537.36',
                "Origin": "https://passport.csdn.net"
            }
        
        
        def login(username, password):
            captcha_solution = None
            captcha_id = None
            lt = None
            execution = None
            event_id = None
            post_data = {
                "username": username,
                "password": password,
                "rememberMe": "true",
            }
            session = requests.Session()
            response = session.get(url, headers=headers).content
            soup = BeautifulSoup(response, "lxml")
            # 解析頁面獲取表單必須的數據
            lt = soup.find(attrs={"type": "hidden", "name": "lt"})['value']
            execution = soup.find(attrs={"type": "hidden", "name": "execution"})['value']
            event_id = soup.find(attrs={"type": "hidden", "name": "_eventId"})['value']
            # print(lt)
            # print(execution)
            # print(event_id)
            # 將獲取的數據加入表單
            post_data['lt'] = lt
            post_data['execution'] = execution
            post_data['_eventId'] = event_id
            #  所有參數準備完畢 開始登錄
            html = session.post(url, data=post_data, headers=headers)
            print(type(html.cookies))
            for key, value in html.cookies.items():
                print(key+": "+value)
            print(html.text)
            # if html.url == 'https://www.csdn.net/':
            #     print(html.text)
            # else:
            #     print('fail')
        
        
        login('15200689458', '199704105896abc')
        回答
        編輯回答
        離觴

        clipboard.png
        可以通過捉包得出, 登錄url 不是https://passport.csdn.net/acc...
        而是這個https://passport.csdn.net/acc...
        session.post(url,data=post_data, headers=headers)
        中的url 改回 https://passport.csdn.net/acc... 就可以登錄

        2017年6月14日 11:43