最近想用Python爬取IBM X-Force的漏洞數(shù)據(jù),在發(fā)現(xiàn)該網(wǎng)站提供免費(fèi)的API后,便開始嘗試使用該API直接獲取數(shù)據(jù)。
但是在使用API的時(shí)候遇到了一個(gè)小問題,它提供的使用案例是以Curl命令的格式給出的:
curl -X 'POST' \
'https://api.xforce.ibmcloud.com/api/vulnerabilities' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: XXXXXXXXXX' \
-d '["CVE-2014-2601","CVE-2017-0001"]'
如果直接使用Python的pycurl庫來執(zhí)行Curl命令的話過于麻煩且啰嗦,因此我嘗試用Requests庫來代替。
這又引出了一個(gè)問題,Curl命令的參數(shù)和Requests庫的參數(shù)格式并不一致。我一度放棄了這個(gè)方案,直到我看到了StackOverflow上的這個(gè)回答:execute-curl-command-within-a-python-script。
該回答推薦了一個(gè)工具:curlconverter,可以將Curl命令直接轉(zhuǎn)換為等效的 Python代碼,例如,上述Curl命令會(huì)被轉(zhuǎn)換為:文章來源:http://www.zghlxwxcb.cn/news/detail-645540.html
import requests
headers = {
'accept': 'application/json',
# Already added when you pass json=
# 'Content-Type': 'application/json',
'Authorization': 'XXXXXXXXXX',
}
json_data = [
'CVE-2014-2601',
'CVE-2017-0001',
]
response = requests.post('https://api.xforce.ibmcloud.com/api/vulnerabilities', headers=headers, json=json_data)
這完美的解決了我的問題。
該工具同時(shí)還可以將Curl命令轉(zhuǎn)換為Java、C、R等語言的代碼,源碼托管在GitHub中。文章來源地址http://www.zghlxwxcb.cn/news/detail-645540.html
到了這里,關(guān)于Python執(zhí)行Curl命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!