问题描述
输入:
import requests
import json
apikey2 = '1234'
headers = {'API-Key':apikey2,'Content-Type':'application/json'}
data = {"url":urlz2,"visibility": "private"}
r2 = requests.post('https://urlscan.io/api/v1/scan/',headers=headers,data=json.dumps(data))
print(r2)
print(r2.json())
输出:
<Response [200]>
{'message': 'Submission successful','uuid': 'xxxxxxxx','result': 'https://urlscan.io/result/xxxxxxxxxx/','api': 'https://urlscan.io/api/v1/result/xxxxxxxxxxx/','visibility': 'private','options': {'useragent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/xxxxxxxx Safari/xxxxxx'},'url': 'https://xxxxxxx.io/'}
在获取所需信息并将其打印在每行上时遇到麻烦,例如:
message: Submission successful
uuid: xxxxxxxx
result: https://urlscan.io/result/xxxxxxxxxx/
visibility: private
我尝试了类似...的事情
for match in r2.json().get('message',[]):
print(f'uuid: {message.get("uuid",{}).get("uuid","UnkNown uuid")}')
但由于get且它是字符串而出现错误
解决方法
respons.json()
方法返回一个字典。您可以遍历此字典的键和值并进行打印。
import requests
import json
apikey2 = '1234'
headers = {'API-Key':apikey2,'Content-Type':'application/json'}
data = {"url":urlz2,"visibility": "private"}
r2 = requests.post('https://urlscan.io/api/v1/scan/',headers=headers,data=json.dumps(data))
print(r2)
dictionary = r2.json()
for key,value in dictionary.items():
print(f"{key} = {value}")
如果您要打印特定键的值,并且在未找到该键的情况下显示一条消息,则可以使用以下代码。此代码遍历感兴趣的键,如果该键不在响应字典中,则可以打印一条消息。否则,您将打印键和值。
keys = ["message","uuid","result","visibility"]
response_dict = r2.json()
for key in keys:
value = response_dict.get(key,None)
if value is None:
print(f"{key} = Unknown {key}")
else:
print(f"{key} = {value}")