import time
import json
import random
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from threading import Thread
# t00ls 账号配置
username = 'xxxx' # 帐号
password = '' # 密码MD5 32位(小写)
question_num = 1 # 安全提问 参考下面
question_answer = '' # 安全提问答案
# 0 = 没有安全提问
# 1 = 母亲的名字
# 2 = 爷爷的名字
# 3 = 父亲出生的城市
# 4 = 您其中一位老师的名字
# 5 = 您个人计算机的型号
# 6 = 您最喜欢的餐馆名称
# 7 = 驾驶执照的最后四位数字
# 选择提醒方式
# notice = 0 # 0 = server酱 1 = 邮件 2 = server酱 + 邮件
req_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded'
}
def t00ls_login(u_name, u_pass, q_num, q_ans):
"""
t00ls 登录函数
:param u_name: 用户名
:param u_pass: 密码的 md5 值 32 位小写
:param q_num: 安全提问类型
:param q_ans: 安全提问答案
:return: 签到要用的 hash 和 登录后的 Cookies
"""
login_data = {
'action': 'login',
'username': u_name,
'password': u_pass,
'questionid': q_num,
'answer': q_ans
}
response_login = requests.post('https://www.t00ls.net/login.json', data=login_data, headers=req_headers)
response_login_json = json.loads(response_login.text)
if response_login_json['status'] != 'success':
return None
else:
print('用户:', username, '登入成功!')
formhash = response_login_json['formhash']
t00ls_cookies = response_login.cookies
t00ls_cookie_dict=requests.utils.dict_from_cookiejar(t00ls_cookies)
return formhash, t00ls_cookies,t00ls_cookie_dict
def t00ls_sign(t00ls_hash, t00ls_cookies):
"""
t00ls 签到函数
:param t00ls_hash: 签到要用的 hash
:param t00ls_cookies: 登录后的 Cookies
:return: 签到后的 JSON 数据
"""
content = ''
sign_data = {
'formhash': t00ls_hash,
'signsubmit': "true"
}
response_sign = requests.post('https://www.t00ls.net/ajax-sign.json', data=sign_data, cookies=t00ls_cookies,headers=req_headers)
response_sign = json.loads(response_sign.text)
if response_sign['status'] == 'success':
print('签到成功 TuBi + 1')
content += 'n签到成功 TuBi + 1n'
elif response_sign['message'] == 'alreadysign':
print('已经签到过啦')
content += 'n已经签到过啦n'
return content
def async(f):
def wrapper(*args, **kwargs):
thr = Thread(target=f, args=args, kwargs=kwargs)
thr.start()
return wrapper
def t00ls_domain(t00ls_hash, t00ls_cookies):
"""
t00ls 域名查询函数
:param t00ls_hash: 签到要用的 hash
:param t00ls_cookies: 登录后的 Cookies
:return: 查询相关的日志信息
"""
content = ''
# 查询今天注册的域名
start_time = time.time()
china_url = 'http://icp.chinaz.com/provinces/PageData'
search_data = f'pageNo=1&pageSize=25&typ=&suffix=&suffixex=com%2Ccn&addrp=%E5%85%A8%E5%9B%BD&addrc=%E5%85%A8%E9%83%A8&ex=0&exwd=&webStatus=0&day=0'
end_time = time.time()
print(f'随机找域名耗时: {end_time - start_time:.4f}秒')
content += f'n随机找域名耗时: {end_time - start_time:.4f}秒nn'
start_time = time.time()
query_url = 'https://www.t00ls.net/domain.html'
query_status = False
query_count = 0 # 查询重试次数
# 如果 t00ls 查询没有成功的话 就一直查询
while not query_status and query_count < 5:
response_domains = json.loads(requests.post(url=china_url, headers=req_headers, data=search_data, timeout=10).text)
if response_domains['data'] ==[]:
print("此时无新增域名")
time.sleep(3)
continue
else:
domain=response_domains['data'][random.sample(range(0, 19), 1)[0]]['host'] # 随机抽取一个 幸运儿
query_data = {
'domain': domain,
'formhash': t00ls_hash,
'querydomainsubmit':'查询'
}
try:
response_query = requests.post(url=query_url, data=query_data, cookies=t00ls_cookies, headers=req_headers)
except Exception:
pass
if domain in response_query.text:
response_tb = requests.get('https://www.t00ls.net/members-tubilog.json', cookies=t00ls_cookies)
if domain in response_tb.text:
print('查询域名成功 TuBi + 1 n')
content += '查询域名成功 TuBi + 1n'
query_status = True
else:
print(f'糟糕 域名查询成功 但是 TuBi 没有增加 可能域名重复了,失败的域名是: {domain}')
content += '糟糕 域名查询成功 但是 TuBi 没有增加 可能域名重复了n'
query_count += 1
print(f'随机延时 5-10 秒,继续第 {query_count} 次查询')
content += f'随机延时 5-10 秒,继续第 {query_count} 次查询nn'
time.sleep(random.randint(5, 10))
else:
print(f'查询失败?失败的域名是: {domain}')
content += f'查询失败?失败的域名是: {domain}n'
query_count += 1
print(f'随机延时 5-10 秒,继续第 {query_count} 次查询')
content += f'随机延时 5-10 秒,继续第 {query_count} 次查询nn'
time.sleep(random.randint(5, 10))
if query_count == 5:
print('重试查询次数已达上限 终止查询')
content += '重试查询次数已达上限 终止查询nn'
end_time = time.time()
print(f't00ls 域名查询耗时: {end_time - start_time:.4f}秒')
content += f't00ls 域名查询耗时: {end_time - start_time:.4f}秒n'
return content
def t00ls_chrome(t00ls_cookie_dict):
chrome_options = Options()
# chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(
'https://www.t00ls.net/index.php')
cookie1=t00ls_cookie_dict['UTH_auth']
cookie2=t00ls_cookie_dict['UTH_sid']
cookie_dict = {
# 'smile': '6D1',
'name': 'UTH_auth',
'value': cookie1,
# 'UTH_sid':cookie2,
# 'UTH_visitedfid': '',
# 'discuz_fastpostrefresh': '0',
# 'checkpm': '1',
}
browser.add_cookie(cookie_dict)
time.sleep(2)
browser.refresh() # 刷新网页,cookies才成功
browser.get('https://www.t00ls.net/index.php')
time.sleep(1)
while True:
elements = browser.find_elements_by_xpath('//*[@id="wrap"]/div/div/div[3]/table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]/div/a')
for element in elements:
text = element.get_attribute('title')
text_list = text.split("n")
print(text_list)
print(text_list[1])
sleeptime = random.randint(4, 9)
time.sleep(sleeptime)
browser.refresh()
# browser.quit()
if __name__ == '__main__':
response_login = t00ls_login(username, password, question_num, question_answer)
x = response_login[0]
y = response_login[1]
z = response_login[2]
t00ls_sign(x, y)
if response_login:
t00ls_domain(x, y)
t00ls_chrome(z)
else:
print('登入失败 请检查输入资料是否正确')
END
本文始发于微信公众号(SecTr安全团队):【技术分享】某论坛刷积分方法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论