从 CPanel 下载原始访问日志文件

时间:2021-07-28 18:12:55

标签: python cpanel

我正在尝试使用 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 的原因)。如果你登录成功,它会自动下载文件,所以我不知道为什么这段代码不起作用。

我能想到的唯一问题是页面的重定向或我处理内容的方式。

有人可以帮忙吗?

1 个答案:

答案 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 文件,我以后可以随意阅读。

相关问题