将变量值插入 URL(或任何字符串)
Inserting variable values into URL (or any string)
我目前正在使用 urllib
和 json
对 REST API 执行 JSON 请求,如下所示:
import urllib, json
url = "http://www.cvedetails.com/json-feed.php?numrows=5&vendor_id=26&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=0&opsqli=1&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=0&cvssscoremin=0"
response = urllib.urlopen(url)
data = json.loads(response.read())
for index, entry in enumerate(data, 1):
print ('Item {}'.format(index))
for name, value in entry.items():
print '{}: {}'.format(name, value)
我正在与之交互的 API 有能力,如果 vendor_id
和 product_id
被更改,它将因为值暗示更改它为供应商和产品,因此会产生不同的响应。
因此我想知道是否可以通过 raw_input
函数或类似操作在 url 字符串中注入和更改 vendor_id
和 product_id
数字,用户可以输入这两个数值?在这种情况下使用 %
运算符是否不正确,因为这是要用字符串注入的字符串?
字符串操作很简单:
vendor_id = raw_input("Vendor ID: ")
product_id = raw_input("Product ID: ")
url = ("http://www.cvedetails.com/json-feed.php?"
"numrows=5"
"&vendor_id={0}"
"&product_id={1}"
"&version_id=0"
"&hasexp=1"
"&opec=1"
"&opov=1"
"&opcsrf=1"
"&opfileinc=1"
"&opgpriv=0"
"&opsqli=1"
"&opxss=0"
"&opdirt=0"
"&opmemc=0"
"&ophttprs=0"
"&opbyp=0"
"&opginf=0"
"&opdos=0"
"&orderby=0"
"&cvssscoremin=0"
.format(vendor_id, product_id))
>>> url
'http://www.cvedetails.com/json-feed.php?numrows=5&vendor_id=26&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=0&opsqli=1&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=0&cvssscoremin=0'
我目前正在使用 urllib
和 json
对 REST API 执行 JSON 请求,如下所示:
import urllib, json
url = "http://www.cvedetails.com/json-feed.php?numrows=5&vendor_id=26&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=0&opsqli=1&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=0&cvssscoremin=0"
response = urllib.urlopen(url)
data = json.loads(response.read())
for index, entry in enumerate(data, 1):
print ('Item {}'.format(index))
for name, value in entry.items():
print '{}: {}'.format(name, value)
我正在与之交互的 API 有能力,如果 vendor_id
和 product_id
被更改,它将因为值暗示更改它为供应商和产品,因此会产生不同的响应。
因此我想知道是否可以通过 raw_input
函数或类似操作在 url 字符串中注入和更改 vendor_id
和 product_id
数字,用户可以输入这两个数值?在这种情况下使用 %
运算符是否不正确,因为这是要用字符串注入的字符串?
字符串操作很简单:
vendor_id = raw_input("Vendor ID: ")
product_id = raw_input("Product ID: ")
url = ("http://www.cvedetails.com/json-feed.php?"
"numrows=5"
"&vendor_id={0}"
"&product_id={1}"
"&version_id=0"
"&hasexp=1"
"&opec=1"
"&opov=1"
"&opcsrf=1"
"&opfileinc=1"
"&opgpriv=0"
"&opsqli=1"
"&opxss=0"
"&opdirt=0"
"&opmemc=0"
"&ophttprs=0"
"&opbyp=0"
"&opginf=0"
"&opdos=0"
"&orderby=0"
"&cvssscoremin=0"
.format(vendor_id, product_id))
>>> url
'http://www.cvedetails.com/json-feed.php?numrows=5&vendor_id=26&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=0&opsqli=1&opxss=0&opdirt=0&opmemc=0&ophttprs=0&opbyp=0&opginf=0&opdos=0&orderby=0&cvssscoremin=0'