import urllib.request import queue import threading import sys def bytes2human(n): """ >>> bytes2human(10000) 9K >>> bytes2human(100001221) 95M """ symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') prefix = {} for i, s in enumerate(symbols): prefix[s] = 1 << (i + 1) * 10 for s in reversed(symbols): if n >= prefix[s]: value = int(float(n) / prefix[s]) return '%s%s' % (value, s) return '%sB' % n def gethtml(url, bak): try: urlbak = url + bak #print(urlbak) req = urllib.request.urlopen(urlbak, timeout=10) if req.code == 200: meta = req.info() file_size = int(meta.getheaders("Content-Length")[0]) m = bytes2human(file_size) content_type = meta.getheaders('Content-Type')[0].split(';')[0] if file_size == 0: return False if 'html' in content_type: return False else: print('%s ---- %s ---- %s ' % (urlbak, m, content_type)) return '%s ---- %s ---- %s ' % (urlbak, m, content_type) else: return False except: return False def writefile(fileName, c): f = open(fileName, "a") f.write(c + "\n") f.close() q = queue.Queue() def scanner(url): for i in bekadd(url): c = gethtml(url, i) if c != False: writefile("bak.txt", c) def worker(): while not q.empty(): url = q.get() scanner(url) q.task_done() def bekadd(url): listbak = ['/1.zip', '/1.rar', '/web.rar', '/web.zip', '/www.rar', '/www.zip', '/wwwroot.rar', '/wwwroot.zip', '/backup.rar', '/backup.zip', '/database.rar', '/database.zip', '/databak.rar', '/databak.zip', '/databackup.rar', '/databackup.zip', '/databack.zip', '/sql.rar', '/sql.zip'] wwwurl = url[url.find("http://") + 7:].rstrip("/ 这是什么代码
时间: 2024-02-14 13:17:44 浏览: 158
这是一段 Python 代码,大致的功能是通过给定的 URL,扫描其备份文件,并将结果写入到一个名为 bak.txt 的文件中。具体的实现包括以下几个函数:
- bytes2human(n):将字节数转换为可读性更好的形式,如 "9K" 或 "95M"。
- gethtml(url, bak):获取指定 URL 的备份文件信息,包括文件大小和文件类型,并返回一个字符串。如果获取失败则返回 False。
- writefile(fileName, c):将字符串 c 写入到名为 fileName 的文件中。
- scanner(url):使用 bekadd(url) 函数生成备份文件的 URL 列表,并依次调用 gethtml(url, i) 获取每个备份文件的信息,并将结果写入 bak.txt 文件中。
- worker():线程函数,从队列中获取 URL 并调用 scanner(url) 进行扫描。
- bekadd(url):根据给定 URL 生成备份文件的 URL 列表。
需要注意的是,该代码仅供学习参考,不应用于非法用途。
阅读全文