簡體   English   中英

使用python3中的請求模塊登錄到此網站

[英]Logging in to this website using requests module in python3

到目前為止,這是我所做的。 我不得不手動提取CSFRToken(我不知道正則表達式,所以那部分很亂)。 CSFR是cookie的一部分嗎? 因為我的cookie僅顯示其他兩個ID類型參數,所以我刪除了cookie部分,並以此方式進行操作。

import requests


URL = r'http://login.cheezburger.com/'
client = requests.session()
login_page = client.get(URL)
index = login_page.text.find("CSRFToken")
token = login_page.text[index:index+90].split('"')[-2]   # This works, I guarantee :)
#print(token)         I checked it manually


login_data = {'rlm': 'Shopper',
              'for': r'http://login.cheezburger.com/',
              'username': 'myusername', 
              'password': 'mypassword',
              'CSRFToken': token}
req = client.post(URL, data=login_data)

現在,每個提示都沒有錯誤,但是我也沒有登錄該站點。 該請求的文本表明,我仍然停留在登錄頁面中!

發送的參數為(如firefox的開發工具所示):

rlm: 'Shopper'
for: 'http://login.cheezburger.com/'
username: 'myusername', 
password: 'mypassword',
CSRFToken: '8uhhbf67-1233-fff3-123g1-123123fsdfs22'

網站資源如下(包含表單數據的部分):

<div class="contents-msl">
    <h2>Client Login</h2>
    <p>Enter username and password</p>
    <div class="form-all-msl">
        <form action="/login.action" id="loginForm" method="post"
              enctype="application/x-www-form-urlencoded"><input type=hidden name=rlm
                                                                 value="Shopper"><input
                type=hidden
                name=for
                value="http%3a%2f%2flogin%cheezburger%2ecom%2f">
            <ul class="form-section-msl">
                <label class="form-label-left-msl" for="loginUserName">
                    Username<span class="form-required">*</span>
                </label>

                <div class="form-input-msl">
                    <input type="text" class="form-textbox-msl" id="loginUserName" name="username"
                           size="20">
                </div>
                <label class="form-label-left-msl" for="loginPwd">
                    Password<span class="form-required-msl">*</span>
                </label>

                <div class="form-input-msl">
                    <input type="password" class="form-textbox-msl" id="loginPwd" name="password"
                           size="20">
                </div>
                <div class="form-input-msl">
                    <div class="form-single-column-msl">

                    </div>
                </div>
            </ul>
    </div>


            <button class="members-btn-msl" type="submit">Login</button>
<input type="hidden" name="CSRFToken" class="CSRFToken" value="8uhhbf67-1233-fff3-123g1-123123fsdfs22" />                    </form>
        </div>
    </div>

您可能想添加一些標題

headers = {
'Accept':
    'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding':
    'gzip, deflate, sdch',
'Accept-Language':
    'en-US,en;q=0.8,vi;q=0.6',
'Cache-Control':
    'max-age=0',
'Connection':
    'keep-alive',
'User-Agent':
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36',

}

然后將標頭添加到您的代碼中:

req = client.post(URL, data=login_data)

祝好運 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM