gpt4 book ai didi

python - 在 Python 中使用 SSL 和身份验证运行 GET

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:28 25 4
gpt4 key购买 nike

我可以通过一种方式从我控制的服务器下载东西——通过将文档 ID 传递到链接中,如下所示:

https://website/deployLink/442/document/download/$NUMBER

如果我在浏览器中导航至此,它会下载 ID 为 $NUMBER 的文件。

问题是,我的服务器上有 9,000 个文件,这些文件是 SSL 加密的,通常需要在网页上出现的弹出对话框中使用用户名/密码登录。

我已经发布了一个类似的帖子,我通过 WGET 下载了文件。现在我想尝试使用 Python,我想提供用户名/密码并通过 SSL 加密。

这是我尝试抓取一个文件的尝试,结果出现 401 错误。下面是完整的堆栈跟踪。

import urllib2
import ctypes
from HTMLParser import HTMLParser

# create a password manager
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()

# Add the username and password.
top_level_url = "https://website.com/home.html"
password_mgr.add_password(None, top_level_url, "admin", "password")
handler = urllib2.HTTPBasicAuthHandler(password_mgr)

# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(handler)

# Install the opener.
# Now all calls to urllib2.urlopen use our opener.
urllib2.install_opener(opener)

# Grab website
response = urllib2.urlopen('https://website/deployLink/442/document/download/1')
html = response.read()

class MyHTMLParser(HTMLParser):

url=''https://website/deployLink/442/document/download/1')'


# Save the file
webpage = urllib2.urlopen(url)
with open('Test.doc','wb') as localFile:
localFile.write(webpage.read())

我在这里做错了什么?我正在尝试的是可能的吗?

C:\Python27\python.exe C:/Users/ADMIN/PycharmProjects/GetFile.py
Traceback (most recent call last):
File "C:/Users/ADMIN/PycharmProjects/GetFile.py", line 22, in <module>
response = urllib2.urlopen('https://website/deployLink/442/document/download/1')
File "C:\Python27\lib\urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 437, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 475, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: Processed

Process finished with exit code 1

这是我的身份验证页面,出于隐私原因删除了一些信息:

Image

授权 url 以 :443 结尾。

最佳答案

假设您上面的代码是准确的,那么我认为您的问题与您的 add_password 方法中的 URI 有关。设置用户名/密码时有这个:

# Add the username and password.
top_level_url = "https://website.com/home.html"
password_mgr.add_password(None, top_level_url, "admin", "password")
handler = urllib2.HTTPBasicAuthHandler(password_mgr)

然后您的后续请求转到此 URI:

# Grab website
response = urllib2.urlopen('https://website/deployLink/442/document/download/1')

(我假设他们被错误地“擦洗”了,他们应该是一样的,然后继续前进。参见:“网站”与“website.com”)

根据它们各自的路径部分,第二个 URI 不是第一个 URI 的子项。 URI 路径 /deployLink/442/document/download/1 不是 /home.html 的子路径。从图书馆的角度来看,你有 no auth data对于第二个 URI。

关于python - 在 Python 中使用 SSL 和身份验证运行 GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com