簡體   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