繁体   English   中英

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

[英]How to download data from a password protected website

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

编辑

这是代码:

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 加密用户名/密码,因为它加密了整个请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM