簡體   English   中英

如果我通過變量傳遞有效負載,Python request.post將不起作用

[英]Python requests.post doesnt work if I pass payload with variables

步驟1:我從文本文件中獲取憑據,其中數據為JSON格式,並將其存儲在變量中。

cred_values = {'username': 'myuser', 'password': 'mypwd'}

第2步:

username = cred_values['username']

password = cred_values['password']

步驟3:准備我的有效載荷,標頭。 負載看起來像這樣

login_headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache',
    'Origin': 'https://xxxxxx.com.au', 'Upgrade-Insecure-Requests': '1',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.9',
}

login_data = {
    'curl': 'Z2FxxxxxZ2F', (xxxx - name of my company)
    'flags': '0',
    'forcedownlevel': '0',
    'formdir': '5',
    'username': username,
    'password': password,
    'trusted': '4',
    'SubmitCreds': ''
}

第4步:發布請求

 login_request_url = 'https://xxxx.com.au/Logon'
 login_response = requests.post(login_request_url, headers=login_headers, data=login_data)

注意事項

  1. 我也嘗試發送有效載荷為

     login_data = {'username': '' + username + '','password': '' + password + ''} login_data = {'username': '' + str(username) + '','password': '' + str(password) + ''} 
  2. 我也嘗試將有效載荷作為json.dumps發送到請求

     login_response = requests.post(login_request_url, headers=login_headers, data=json.dumps(login_data)) 

如果發布上述請求但未登錄,則不會出現任何錯誤。

例如:

如果我直接添加用戶名,請在login_data中添加密碼

網址看起來像這樣,這表示已成功登錄-'https://xxxx.com.au/content.asp ? token = xxxxx'

如果我通過從憑證文件中獲取來發送用戶名和密碼

網址看起來像這樣,表示未成功登錄-'https: //xxxx.com.au/ '

根據服務器的期望,您可能需要將JSON有效負載作為帶引號的字符串發送:我認為您具有以下條件:

login_data = {'username': '' + username + '','password': '' + password + ''}
login_data = {'username': '' + str(username) + '','password': '' + str(password) + ''}

嘗試以下

login_data =  '{"username": " ' + str(username) + ' ","password": "' + str(password) + '"}'

使用單引號從代碼到字符串,並使用雙引號表示字符串中的帶引號的值(或者您可以用另一種方法來做到)。 另外,您可以只使用同一組引號,然后轉義要在字符串中使用的引號,但是我個人認為很難快速讀取,例如

data =  '{\'username\': \''+ str(username) + '\',\'password\': \'' + str(password) + '\'}'

看看是否有幫助

暫無
暫無

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

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