如何从受密码保护的网站下载数据



我正在使用python中的请求来尝试下载此文件: http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11/N55W003.SRTMGL1.hgt.zip 有 14000 个这样的文件,因此我需要自动化该过程。我在网上找到的其他技术似乎不起作用。我假设由于网站设计为使用不同的身份验证方法。我对 Web 开发了解不多,所以我无法弄清楚这种身份验证是如何工作的。

编辑

这是代码:

import json
import requests
from requests.auth import HTTPBasicAuth

file = open("srtm30m_bounding_boxes.json", 'r')
strjson = file.read()
x = json.loads(strjson)
filenamelist = []
url = "http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11/N55W003.SRTMGL1.hgt.zip"
for i in range(14295):
filenamelist.append(x['features'][i]['properties']['dataFile'])
filenamelist[i] = "http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11/" + filenamelist[i]
jar = requests.cookies.RequestsCookieJar()
jar.set('urs_user_already_logged', 'yes')
jar.set('_urs-gui_session','8b972449036e60e3d83a6a819b93124d')
r = requests.get(url, cookies=jar)

这是我运行代码时遇到的错误:

ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

最简单的方法是在主机之前的URL中提供用户名和密码,例如:

requests.get('http://{username}:{password}@e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11/{subpath}'.format(username=username, password=password, subpath=filenamelist[i]))

您还可以提供用户名/密码作为auth参数以获取:

requests.get('http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11/{subpath}'.format(subpath=filenamelist[i]), auth=(username, password))

TotalHack是对的,HTTPS更安全,它似乎可以在这个网站上工作。 这种形式的身份验证以明文形式传输用户名和密码,因此任何可以观察 http 请求的人也可以窃取您的登录信息。 https 加密用户名/密码,因为它加密了整个请求。

最新更新