我在Linux中使用curl在Linux中玩,但现在我需要将我的脚本移动到python以便更有效。 在python上执行以下行的最佳方法是什么?
curl baseuri:port/resource -u user:pswd
我已经玩了urllib2,但我不知道如何发送“-u user:pswd”
答案 0 :(得分:3)
您需要使用HTTPPasswordMgrWithDefaultRealm
instance来处理身份验证,并添加HTTPBasicAuthHandler
handler以响应身份验证质询:
import urllib2
url = 'baseuri:port/resource'
username = 'user'
password = 'pswd'
pwmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
pwmgr.add_password(None, url, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
response = opener.open(theurl)
是的,这是少数。
如果您可以安装第三方库,则添加使用requests
library;它会变得如此简单:
import requests
url = 'baseuri:port/resource'
username = 'user'
password = 'pswd'
response = requests.get(url, auth=(username, password))
答案 1 :(得分:0)
实际上,我们使用的是pycurl,它也可以很好地运行。这是从请求中获取json的示例:
import pycurl
import json
from io import BytesIO
data = BytesIO()
pyCurl = pycurl.Curl()
pyCurl.setopt(pyCurlClass.URL,string_http)
pyCurl.setopt(pycurl.USERPWD, 'user:password')
pycurl.setopt(c.WRITEFUNCTION, data.write)
pyCurl.perform()
dictionary = json.loads(data.getvalue())