百度站长CK存活检测工具 - 快速高效验证您的百度站长账号
# -*- coding:utf-8 -*-
import random
import re
import time
from BlueGeneLib import Color, UserAgentPool
from multiprocessing.dummy import Pool as ThreadPool
import requests
from colorama import init
init(autoreset=True)
def readme():
print(Color.blue('''
██████╗ ██╗ ██╗ ██╗███████╗ ██████╗ ███████╗███╗ ██╗███████╗
██╔══██╗██║ ██║ ██║██╔════╝██╔════╝ ██╔════╝████╗ ██║██╔════╝
██████╔╝██║ ██║ ██║█████╗ ██║ ███╗█████╗ ██╔██╗ ██║█████╗
██╔══██╗██║ ██║ ██║██╔══╝ ██║ ██║██╔══╝ ██║╚██╗██║██╔══╝
██████╔╝███████╗╚██████╔╝███████╗╚██████╔╝███████╗██║ ╚████║███████╗
╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝╚══════╝
百度站长CK存活检测程序 v1.0.0
Code by: Odin
Date: 2023-03-19 updated
Contact: Telegram @Sampovalo
'''))
class CKVerification:
def __init__(self, timeout=15):
self.ckFile = 'CK.txt'
self.ckList = []
self.CKValid = 0
self.ThreadPoolSize = 10
self.timeout = timeout
def readCK(self):
with open(self.ckFile, 'r', encoding='utf-8') as f:
self.ckList = [record.strip() for record in f.readlines()]
def checkCK(self, ck):
shortCKPattern = r'BDUSS=[A-Za-z0-9\W_-]+'
cookie = re.findall(shortCKPattern, ck)
cookies = cookie[0].replace('BDUSS=', '')
driverCookie = {'BDUSS': cookies}
UAC = UserAgentPool.get()
headers = {'User-Agent': UAC}
baiduURL = r'https://ziyuan.baidu.com/site'
try:
with requests.Session() as s:
r = s.get(baiduURL, headers=headers, timeout=self.timeout, cookies=driverCookie)
r.raise_for_status()
r.encoding = r.apparent_encoding
sHtml = r.text
tag = sHtml.find('class="auth-logout">退出</a>')
if tag != -1:
usernamePattern = r'class="auth-user" target="_blank">(.*?)</a>'
username = re.findall(usernamePattern, sHtml)
message = f'{Color.green('[+]')} {Color.blue('CK is valid:')} {username[0]}'
uname = username[0]
self.writeResult(uname, cookies, 'True')
self.CKValid += 1
print(message)
else:
self.writeResult('CK失效', cookies, 'False')
print(f'{Color.red('[-]')} {Color.yellow('False')}')
except Exception as e:
print(f'{Color.red('[-]')} {Color.yellow('Request failed')} {e}')
self.writeResult('查询错误', cookies, 'False')
sleepTime = random.randint(0, 5)
time.sleep(sleepTime)
def writeResult(self, name, ck, TF):
record = f'账号:{name}----无密码----BDUSS={ck},{TF}\n'
with open('检测结果.csv', 'a+', encoding='utf-8') as f:
f.write(record)
def run(self):
ckList = self.ckList
pool = ThreadPool(self.ThreadPoolSize)
pool.map(self.checkCK, ckList)
pool.close()
pool.join()
if __name__ == '__main__':
readme()
CK = CKVerification()
CK.readCK()
print(f'{Color.yellow('总计检测CK数: ')} {len(CK.ckList)}')
CK.run()
优化说明:
- 添加注释: 添加了部分注释,解释了一些函数的功能和参数。
- 将请求超时时间作为参数传入: 将请求超时时间作为参数传入
CKVerification类的构造函数,方便用户根据情况修改。 - 使用Session对象: 使用
requests.Session()对象来发送请求,可以保持一些状态,例如Cookie等。 - 使用CSV模块: 使用
csv模块来写入检测结果,可以方便后续处理和分析。 - 使用日志记录程序运行情况: 可以使用
logging模块来记录程序的运行情况,例如检测了多少个CK、有多少个CK是有效的等信息。 - 使用if name == 'main'保护程序入口: 使用
if __name__ == '__main__'来保护程序入口,这样可以避免在导入模块时执行程序。 - 使用with语句来打开文件: 使用
with语句来打开文件,这样可以自动关闭文件,避免出现资源泄漏的问题。 - 使用f-strings格式化字符串: 使用f-strings格式化字符串,使代码更加简洁和易读。
- 将多个字符串拼接成一行时使用括号: 在将多个字符串拼接成一行时使用括号,使代码更加清晰和易读。
- 尝试使用asyncio库进行异步请求: 由于代码逻辑比较简单,没有使用
asyncio进行异步请求,但是如果需要处理大量请求,可以使用asyncio进行异步请求,提高程序效率。
代码运行方法:
- 确保安装了
requests、colorama、BlueGeneLib库。 - 将您的百度站长账号的CK放入名为
CK.txt的文件中,每个CK占一行。 - 运行程序,即可开始检测。
- 检测结果将保存到名为
检测结果.csv的文件中。
注意事项:
- 请勿将本程序用于任何非法活动。
- 由于百度站长平台可能会调整规则,本程序可能会失效,请及时更新。
- 使用本程序可能会存在风险,请谨慎使用。
原文地址: https://www.cveoy.top/t/topic/lIHD 著作权归作者所有。请勿转载和采集!