|
|
|
@ -5,39 +5,49 @@ import time |
|
|
|
import json |
|
|
|
import requests |
|
|
|
from DrissionPage import ChromiumPage, ChromiumOptions, Chromium |
|
|
|
from psutil import users |
|
|
|
|
|
|
|
|
|
|
|
class LubanSMS: |
|
|
|
"""鲁班短信平台API封装""" |
|
|
|
|
|
|
|
def __init__(self, api_key): |
|
|
|
self.api_key = api_key |
|
|
|
self.base_url = "https://lubansms.com/v2/api" |
|
|
|
def __init__(self, username, password, sid='97827'): |
|
|
|
self.sid = sid |
|
|
|
self.username = username |
|
|
|
self.password = password |
|
|
|
self.base_url = "https://api.haozhuma.com" |
|
|
|
self.token = self.get_token() |
|
|
|
self.get_token() |
|
|
|
|
|
|
|
def get_token(self): |
|
|
|
url = f'{self.base_url}/sms/?api=login&user={self.username}&pass={self.password}' |
|
|
|
res = requests.get(url).json() |
|
|
|
# print(res) |
|
|
|
token = res['token'] |
|
|
|
return token |
|
|
|
|
|
|
|
def get_balance(self): |
|
|
|
"""查询余额""" |
|
|
|
url = f"{self.base_url}/getBalance" |
|
|
|
params = {"apikey": self.api_key} |
|
|
|
response = requests.get(url, params=params) |
|
|
|
return response.json() |
|
|
|
url = f"{self.base_url}/sms/?api=getSummary&token={self.token}" |
|
|
|
response = requests.get(url).json() |
|
|
|
print('账号信息:', response) |
|
|
|
return response |
|
|
|
|
|
|
|
def get_number(self): |
|
|
|
"""获取手机号码""" |
|
|
|
url = 'https://lubansms.com/v2/api/getKeywordNumber?apikey=5ebc10c8e8c35797de15c9af46063b36&phone=&cardType=全部' |
|
|
|
url = 'https://lubansms.com/v2/api/getKeywordNumber?apikey=5ebc10c8e8c35797de15c9af46063b36&phone=&cardType=%E5%85%A8%E9%83%A8' |
|
|
|
url = 'https://lubansms.com/v2/api/getKeywordNumber?apikey=5ebc10c8e8c35797de15c9af46063b36&phone=&cardType=%E5%85%A8%E9%83%A8' |
|
|
|
url = f'{self.base_url}/sms/?api=getPhone&token={self.token}&sid={self.sid}' |
|
|
|
response = requests.get(url) |
|
|
|
return response.json() |
|
|
|
|
|
|
|
def get_sms(self, phone): |
|
|
|
"""获取短信验证码""" |
|
|
|
url = f"https://lubansms.com/v2/api/getKeywordSms?apikey=5ebc10c8e8c35797de15c9af46063b36&phone={phone}&keyword=月之暗面" |
|
|
|
url = f"{self.base_url}/sms/?api=getMessage&token={self.token}&sid={self.sid}&phone={phone}" |
|
|
|
response = requests.get(url) |
|
|
|
return response.json() |
|
|
|
|
|
|
|
def set_status(self, phone): |
|
|
|
"""更改请求状态""" |
|
|
|
url = f'https://lubansms.com/v2/api/delKeywordNumber?apikey=5ebc10c8e8c35797de15c9af46063b36&phone={phone}' |
|
|
|
"""拉黑号码""" |
|
|
|
url = f'{self.base_url}/sms/?api=addBlacklist&token={self.token}&sid={self.sid}&phone={phone}' |
|
|
|
response = requests.get(url).json() |
|
|
|
print(response) |
|
|
|
return response |
|
|
|
@ -70,14 +80,14 @@ def save_spider_session(platform_id='4', file_url='', account='test', cookie='') |
|
|
|
return res |
|
|
|
|
|
|
|
|
|
|
|
def kimi_auto_login(api_key): |
|
|
|
def kimi_auto_login( username, password, sid='97827'): |
|
|
|
""" |
|
|
|
使用DrissionPage和鲁班短信平台API自动登录Kimi |
|
|
|
api_key: 鲁班短信平台API密钥 |
|
|
|
service_id: 服务ID,默认为Tinder越南服务 |
|
|
|
""" |
|
|
|
# 初始化鲁班短信API |
|
|
|
luban = LubanSMS(api_key) |
|
|
|
luban = LubanSMS( username, password, sid=sid) |
|
|
|
|
|
|
|
# 检查余额 |
|
|
|
balance_info = luban.get_balance() |
|
|
|
@ -85,7 +95,7 @@ def kimi_auto_login(api_key): |
|
|
|
print(f"API密钥错误: {balance_info.get('msg')}") |
|
|
|
return None |
|
|
|
|
|
|
|
print(f"当前余额: {balance_info.get('balance')}元") |
|
|
|
print(f"当前余额: {balance_info.get('money')}元") |
|
|
|
co = ChromiumOptions() |
|
|
|
co.incognito(True) # 匿名模式 |
|
|
|
co.auto_port() |
|
|
|
@ -122,11 +132,12 @@ def kimi_auto_login(api_key): |
|
|
|
time.sleep(2) |
|
|
|
page.ele('xpath:/html/body/div[3]/div/div/div/label/span').click() |
|
|
|
# 获取手机号码 |
|
|
|
number_info = {} |
|
|
|
for i in range(30): |
|
|
|
print("正在获取手机号码...") |
|
|
|
number_info = luban.get_number() |
|
|
|
print(number_info) |
|
|
|
if number_info.get("code") != 0: |
|
|
|
if str(number_info.get("code")) != '0': |
|
|
|
print(f"获取手机号码失败: {number_info.get('msg')}") |
|
|
|
continue |
|
|
|
else: |
|
|
|
@ -166,13 +177,13 @@ def kimi_auto_login(api_key): |
|
|
|
# 等待并获取验证码 |
|
|
|
print("等待验证码...") |
|
|
|
sms_code = None |
|
|
|
max_attempts = 15 # 最多等待30次,每次3秒 |
|
|
|
max_attempts = 60 # 最多等待30次,每次3秒 |
|
|
|
|
|
|
|
for i in range(max_attempts): |
|
|
|
sms_info = luban.get_sms(phone_number) |
|
|
|
print(sms_info) |
|
|
|
if sms_info.get("code") == 0: |
|
|
|
sms_code = sms_info.get("msg") |
|
|
|
if str(sms_info.get("code")) == '0': |
|
|
|
sms_code = sms_info.get("sms") |
|
|
|
print(f"收到验证码: {sms_code}") |
|
|
|
break |
|
|
|
else: |
|
|
|
@ -238,8 +249,10 @@ def kimi_auto_login(api_key): |
|
|
|
finally: |
|
|
|
# 关闭浏览器 |
|
|
|
try: |
|
|
|
luban.set_status(phone_number) |
|
|
|
page.close() |
|
|
|
br.quit() |
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
print(e) |
|
|
|
|
|
|
|
@ -247,13 +260,12 @@ def kimi_auto_login(api_key): |
|
|
|
# eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ1c2VyLWNlbnRlciIsImV4cCI6MTc4MDY1MDUzMSwiaWF0IjoxNzc4MDU4NTMxLCJqdGkiOiJkN3RnYTh0cWlwNjhpa3ZqdGtqMCIsInR5cCI6ImFjY2VzcyIsImFwcF9pZCI6ImtpbWkiLCJzdWIiOiJkN3RnYTh0cWlwNjhpa3ZqdGtlMCIsInNwYWNlX2lkIjoiZDd0Z2E4dHFpcDY4aWt2anRrZGciLCJhYnN0cmFjdF91c2VyX2lkIjoiZDd0Z2E4dHFpcDY4aWt2anRrZDAiLCJzc2lkIjoiMTczMTc0MTgwODg3MjkyMjE1MyIsImRldmljZV9pZCI6Ijc2MzY3MDMwMDkwOTA1ODg0MjciLCJyZWdpb24iOiJjbiIsIm1lbWJlcnNoaXAiOnsibGV2ZWwiOjEwfX0.t9mZ7v-XRWQp91QAWxhvG2l5-VKNwJUIv2R2YDD9ilOUStOh6Oz03wiwQkKLcxke17PuSfcj6DUY_8YByTl1rA |
|
|
|
if __name__ == '__main__': |
|
|
|
# 需要用户输入API密钥 |
|
|
|
api_key = '5ebc10c8e8c35797de15c9af46063b36' |
|
|
|
service_id = '541182' |
|
|
|
|
|
|
|
|
|
|
|
a = 0 |
|
|
|
for u in range(100): |
|
|
|
try: |
|
|
|
result = kimi_auto_login(api_key) |
|
|
|
result = kimi_auto_login( 'ef7f3e7dcafdcfcbe7aa4afda8efbabed39432e897032fbc6d43958513acaf83', 'c9d369d3fa0f3481158aa2b320b8067f61ae4f9d3801c132eae1c9e48e350791', sid='97827') |
|
|
|
if result: |
|
|
|
a += 1 |
|
|
|
print(f"自动登录完成,cookies文件: {result}") |
|
|
|
|