以上就是给各位分享Pythonurllib2基本身份验证问题,其中也会对pythonurlliburlencode进行解释,同时本文还将给你拓展Alfresco基本身份验证适用于curl但不适用于py
以上就是给各位分享Python urllib2基本身份验证问题,其中也会对python urllib urlencode进行解释,同时本文还将给你拓展Alfresco 基本身份验证适用于 curl 但不适用于 python、Python 3-urllib,HTTP错误407:需要代理身份验证、Python URLLib / URLLib2开机自检、Python urllib2 HTTPS和代理NTLM身份验证等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- Python urllib2基本身份验证问题(python urllib urlencode)
- Alfresco 基本身份验证适用于 curl 但不适用于 python
- Python 3-urllib,HTTP错误407:需要代理身份验证
- Python URLLib / URLLib2开机自检
- Python urllib2 HTTPS和代理NTLM身份验证
Python urllib2基本身份验证问题(python urllib urlencode)
更新:根据Lee的评论,我决定将我的代码压缩为一个非常简单的脚本,然后从命令行运行它:
import urllib2
import sys
username = sys.argv[1]
password = sys.argv[2]
url = sys.argv[3]
print("calling %s with %s:%s\n" % (url,username,password))
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None,url,password)
urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman)))
req = urllib2.Request(url)
f = urllib2.urlopen(req)
data = f.read()
print(data)
不幸的是,它仍然不会生成Authorization
标题(每个Wireshark):(
我在通过urllib2发送基本AUTH时遇到问题。我看了这篇文章,并跟随了这个例子。我的代码:
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None,"api.foursquare.com",password)
urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman)))
req = urllib2.Request("http://api.foursquare.com/v1/user")
f = urllib2.urlopen(req)
data = f.read()
我通过Wireshark在Wire上看到以下内容:
GET /v1/user HTTP/1.1
Host: api.foursquare.com
Connection: close
Accept-Encoding: gzip
User-Agent: Python-urllib/2.5
与通过curl发送请求相比,您可以看到未发送授权: curl -u user:password
http://api.foursquare.com/v1/user
GET /v1/user HTTP/1.1
Authorization: Basic =SNIP=
User-Agent: curl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3
Host: api.foursquare.com
Accept: */*
由于某种原因,我的代码似乎未发送身份验证-有人看到我丢失了什么吗?
谢谢
-西蒙
Alfresco 基本身份验证适用于 curl 但不适用于 python
您正在使用 data
参数,但您需要使用 file
argument:
def handle_row_for_request(row):
url = 'https://' + hostname + '/alfresco/api/-default-/public/alfresco/versions/1/nodes/' + base_uuid + '/children'
files = {'filedata': ('/home/user/file.pdf',open('/home/user/file.pdf','rb'))}
headers={"content-type": "multipart/form-data"}
response = requests.post(url,headers=headers,files=files,auth=(username,password))
,
下面是 Python 代码,它适用于上传,也使用基本身份验证。请检查请求参数。
import json
import requests
url = "http://localhost:8080/alfresco/service/api/upload"
auth = ("admin","admin")
files = {"filedata": open("/tmp/foo.txt","rb")}
data = {"siteid": "test","containerid": "documentLibrary"}
r = requests.post(url,data=data,auth=auth)
print(r.status_code)
print(json.loads(r.text))
,
问题有两部分。首先我需要使用文件参数而不是数据。最重要的是,Alfresto 想要在文件参数中获取 'filedata' 字符串。
其次 auth(user,pw) 生成了一个哈希,最后有一个 = 符号,在 alfresco 上说 401。当我使用 cURL 并从那里获取密码哈希时,它最后有两个 = 符号。很奇怪吧?但这奏效了。我没有使用 auth(user,pw),而是将 'Authorization': 'Basic ${base64thing}' 设置为身份验证。
response = requests.post(url,headers={'Authorization': 'Basic base64string'},files={'filedata': open(/path/,'rb')})```
Python 3-urllib,HTTP错误407:需要代理身份验证
我正在尝试使用urllib.request.urlopen()打开一个网站(我在公司代理后面),但出现错误:
urllib.error.HTTPError: HTTP Error 407: Proxy Authentication Required
我可以在urllib.request.getproxies()中找到该代理,但是如何指定用于该代理的用户名和密码?我在官方文档中找不到解决方案。
答案1
小编典典import urllib.request as reqproxy = req.ProxyHandler({''http'': r''http://username:password@url:port''})auth = req.HTTPBasicAuthHandler()opener = req.build_opener(proxy, auth, req.HTTPHandler)req.install_opener(opener)conn = req.urlopen(''http://google.com'')return_str = conn.read()
Python URLLib / URLLib2开机自检
我正在尝试使用wx / Python创建超简单的虚拟输入/输出板。我对存储数据的服务器的请求之一具有以下代码:
data = urllib.urlencode({'q': 'Status'})
u = urllib2.urlopen('http://myserver/inout-tracker',data)
for line in u.readlines():
print line
没什么特别的。我遇到的问题是,基于我阅读文档的方式,这应该执行“发布请求”,因为我已经提供了data参数,但这种情况没有发生。我在该网址的索引中包含以下代码:
if (!isset($_POST['q'])) { die ('No action specified'); }
echo $_POST['q'];
每次我运行Python App时,都会在控制台上显示“未指定操作”文本。我将尝试使用Request Objects来实现它,因为我已经看到了一些包含这些对象的演示,但是我想知道是否有人可以帮助我解释为什么我没有收到带有此代码的Post Request。谢谢!
-编辑-
此代码可以正常工作,并且可以正确地发布到我的网页上:
data = urllib.urlencode({'q': 'Status'})
h = httplib.HTTPConnection('myserver:8080')
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
h.request('POST','/inout-tracker/index.php',data,headers)
r = h.getresponse()
print r.read()
我仍然不确定为什么在提供data参数时urllib2库不发布-对我来说文档指示应该。
Python urllib2 HTTPS和代理NTLM身份验证
urllib2似乎一般不支持HTTPS代理身份验证,甚至不支持NTLM身份验证。任何人都知道在具有NTLM身份验证的代理上是否存在HTTPS修补程序。
问候,
答案1
小编典典迟回复。Urllib2不支持NTLM代理,但pycurl支持。摘抄:
self._connection = pycurl.Curl()self._connection.setopt(pycurl.PROXY, PROXY_HOST)self._connection.setopt(pycurl.PROXYPORT, PROXY_PORT)self._connection.setopt(pycurl.PROXYUSERPWD, "%s:%s" % (PROXY_USER, PROXY_PASS))...
关于Python urllib2基本身份验证问题和python urllib urlencode的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Alfresco 基本身份验证适用于 curl 但不适用于 python、Python 3-urllib,HTTP错误407:需要代理身份验证、Python URLLib / URLLib2开机自检、Python urllib2 HTTPS和代理NTLM身份验证等相关内容,可以在本站寻找。
本文标签: