簡體   English   中英

PYTHON:請求和響應 401

[英]PYTHON: requests and response 401

我的身份驗證有點問題。 我正在編寫一個腳本,它從用戶那里獲取登錄名和密碼(從鍵盤輸入),然后我想從網站上獲取一些數據(http 不是 https),但是每次運行腳本時,響應都是 401。我讀了堆棧中的一些類似帖子,我嘗試了以下解決方案:

解決方案1

c = HTTPConnection("somewebsite")
userAndPass = b64encode(b"username:password").decode("ascii")
headers = { 'Authorization' : 'Basic %s' %  userAndPass }
c.request('GET', '/', headers=headers)
res = c.getresponse()
data = res.read()

解決方案2

with requests.Session() as c:
    url = 'somewebsite'
    USERNAME = 'username'
    PASSWORD = 'password'
    c.get(url)
    login_data = dict(username = USERNAME, password = PASSWORD)
    c.post(url,data = login_data)
    page = c.get('somewebsite', headers = {"Referer": "somwebsite"})
    print(page)

解決方案3

www = 'somewebsite'
value ={'filter':'somefilter'}
data = urllib.parse.urlencode(value)
data=data.encode('utf-8')
req = urllib.request.Request(www,data)
resp = urllib.request.urlopen(req)
respData = resp.read()
print(respData)
x = urllib.request.urlopen(www,"username","password")
print(x.read())'

我不知道如何解決這個問題。 有人可以給我一些鏈接或提示嗎?

您是否嘗試過請求中的基本身份驗證示例?

>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>

我可以知道網站上的身份驗證類型嗎?

這是一個官方的基本身份驗證示例( http://docs.python-requests.org/en/master/user/advanced/#http-verbs

from requests.auth import HTTPBasicAuth
auth = HTTPBasicAuth('fake@example.com', 'not_a_real_password')

r = requests.post(url=url, data=body, auth=auth)
print(r.status_code)

要將 api 與身份驗證一起使用,我們需要有 token_id 或 app_id 來為我們的請求提供訪問權限。 下面是我們如何制定 url 並獲得響應的示例:強文本

import requests
city = input()
api_call = "http://api.openweathermap.org/data/2.5/weather?"
app_id = "892d5406f4811786e2b80a823c78f466"
req_url = api_call + "q=" + city + "&appid=" + app_id
response = requests.get(req_url)
data = response.json()
if (data["cod"] == 200):
    hum = data["main"]["humidity"]
    print("Humidity is % d " %(hum))
elif data["cod"] != 200:
    print("Error occurred : " ,data["cod"], data["message"])

暫無
暫無

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

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