[英]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.