在过去几天试图让Qualys使用python之后,我通常会遇到类似401之类的错误,这是因为python代码示例显示它们不受支持。
由于Qualys是用curl编写的,所以我使用Curl.trillworks.com将curl转换为python。
我使用的代码是:(curl)
curl -u "USERNAME:PASSWD" -H "X-Requested-With: Curl" -X "POST" -d
"action=create&title=My+Dynamic+Search+List&global=1&published_dat
e_within_last_days=7&patch_available=1"
"https://qualysapi.qualys.com/api/2.0/fo/qid/search_list/dynamic/"并将其转换为python:
import requests
headers = {
'X-Requested-With': 'Curl',
}
data = [
('published_date_within_last_days', '7'),
('patch_available', '1'),
]
response = requests.post('https://qualysapi.qualys.com/api/2.0/fo/qid/search_list/dynamic/', headers=headers, data=data, auth=('USRNAME', 'PASSWORD'))
print (response)得到了401的回复。有什么想法或更多的澄清我应该补充吗?谢谢
更新- 12/27/2020
我已经很久没遇到这个问题了。我不知道问题是什么,但对于其他有同样问题的人,我建议将CURL语句插入到诸如失眠或邮差之类的工具中,这些工具可以将这些语句转换成任何语言。这将帮助你得到更准确的转换。
发布于 2020-10-08 00:05:23
我假设用户名/密码输入无效。
发布于 2021-12-28 10:46:29
根据Qualys API v10.16,您可以通过在执行登录后传递QualysSession cookie来尝试基于会话的身份验证。
发布登录请求:
login_api = api_url+"/api/2.0/fo/session/"
myheaders = { 'X-Requested-With': 'python'}
myparams = { "action" : "login", "username" : api_username, "password" : api_password}
r_login = requests.post(login_api, headers=myheaders, params=myparams)
print(r_login.status_code)
print(r_login.cookies.get_dict())获得登录ok响应后,可以将cookie传递为dict in、后续的get或post。
mycookies = r_login.cookies.get_dict()
r_new = requests.post(another_url, headers=myheaders, params=myparams, cookies=mycookies)发布于 2022-03-03 09:06:42
有两个问题,您的数据是列表的,而它应该是json;第二,您应该在使用用户名和密码进行请求时使用HTTPBasicAuth。
下面是修正后的代码
import requests
from requests.auth import HTTPBasicAuth
headers = {
'X-Requested-With': 'Curl',
}
data = {
'published_date_within_last_days': '7',
'patch_available': '1',
}
response = requests.post('https://qualysapi.qualys.com/api/2.0/fo/qid/search_list/dynamic/', headers=headers, data=data, auth=HTTPBasicAuth('USRNAME', 'PASSWORD'))
print (response)https://stackoverflow.com/questions/51383793
复制相似问题