我正在尝试使用 Python 从 CPanel 下载原始访问日志(扩展名为 .gz 的文件),这是我正在使用的脚本:
import requests
CREDENTIALS = {'username': 'someuser', 'password': 'somepass'}
url = 'https://site/getlogarchive/logname.gz'
resp = requests.get(url, data=CREDENTIALS, allow_redirects=True, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}, stream=True)
if resp.status_code == 200:
filename ='somepathhere\\log.txt'
with open(filename, 'wb') as f:
f.write(resp.content)
print("done")
else:
print("not done")
我对此有疑问,log.txt
文件不包含存档中的数据,而是包含 CPanel 页面的 HTML。
我尝试从另一个我未登录的浏览器输入 URL,当您输入时,它会向您显示登录页面(这就是 .get
具有 data=CREDENTIALS
的原因)。如果你登录成功,它会自动下载文件,所以我不知道为什么这段代码不起作用。
我能想到的唯一问题是页面的重定向或我处理内容的方式。
有人可以帮忙吗?
答案 0 :(得分:0)
经过几次尝试,我找到了问题的答案! 这是对我有用的代码:
import requests
url = 'https://site/getlogarchive/logname.gz'
resp = requests.get(url, auth=('someuser', 'somepass'), allow_redirects=True, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}, stream=True)
if resp.status_code == 200:
filename ='log.gz'
with open(filename, 'wb') as f:
f.write(resp.content)
这样文件就被保存为 .gz 文件,我以后可以随意阅读。