Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Autologin2 #6

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/login.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Run Login Script
on:
workflow_dispatch:
schedule:
- cron: "0 0 */3 * *" # 每三天运行一次,可以根据需求调整时间
- cron: "10 0 */11 * *" # 每11天运行一次,可以根据需求调整时间
push:
branches:
- main
Expand Down Expand Up @@ -33,8 +33,7 @@ jobs:

- name: 运行登录脚本
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
PUSHPLUS_TOKEN: ${{ secrets.PUSHPLUS_TOKEN }}
ACCOUNTS_JSON: ${{ secrets.ACCOUNTS_JSON }}
run: |
python login_script.py
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
account.json
account.json
63 changes: 19 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
## serv00与ct8自动化批量保号,每3天自动登录一次面板,并且发送消息到Telegram
## serv00自动化批量保号,自定义时间自动登录一次面板,并且用“推送加”发送消息到微信

利用github Action以及python脚本实现

🙏🙏🙏点个Star!!Star!!Star!!

交流群:https://t.me/yxjsjl

### 将代码fork到你的仓库并运行的操作步骤

#### 1. Fork 仓库
Expand All @@ -18,30 +14,30 @@

#### 2. 设置 GitHub Secrets

1. **创建 Telegram Bot**
- 在 Telegram 中找到 `@BotFather`,创建一个新 Bot,并获取 API Token。
- 获取到你的 Chat ID 方法一,在[一休技术交流群](https://t.me/yxjsjl)里发送`/id@KinhRoBot`获取,返回用户信息中的`ID`就是Chat ID
- 获取到你的 Chat ID 方法二,可以通过向 Bot 发送一条消息,然后访问 `https://api.telegram.org/bot<your_bot_token>/getUpdates` 找到 Chat ID。

2. **配置 GitHub Secrets**
1. **配置 GitHub Secrets**
- 转到你 fork 的仓库页面。
- 点击 `Settings`,然后在左侧菜单中选择 `Secrets`。
- 点击 `Settings`,然后在左侧菜单中选择 `Secrets and variables`。
- 添加以下 Secrets:
- `ACCOUNTS_JSON`: 包含账号信息的 JSON 数据。例如
- `ACCOUNTS_JSON`: 包含账号信息的 JSON 数据:
-
```json
[
{"username": "serv00的账号", "password": "serv00的密码", "panel": "panel6.serv00.com"},
{"username": "ct8的账号", "password": "ct8的密码", "panel": "panel.ct8.pl"},
{"username": "user2", "password": "password2", "panel": "panel6.serv00.com"}
{
"username": "user1",
"password": "pass1",
"panelnum": "服务器号,比如s5.serv00.com的就是5"
},
{
"username": "user2",
"password": "pass2",
"panelnum": "服务器号,比如s5.serv00.com的就是5"
}
]
```
- `TELEGRAM_BOT_TOKEN`: 你的 Telegram Bot 的 API Token。
- `TELEGRAM_CHAT_ID`: 你的 Telegram Chat ID。

- **获取方法**:
- 在 Telegram 中创建 Bot,并获取 API Token 和 Chat ID。
- 在 GitHub 仓库的 Secrets 页面添加这些值,确保它们安全且不被泄露。
- **“推送加TOKEN”获取方法**:
- 在https://pushplus.plus/ 中申请TOKEN。
- 添加以下 Secrets:
- `PUSHPLUS_TOKEN`: 你的 推送加TOKEN。

#### 3. 启动 GitHub Actions

Expand All @@ -53,30 +49,9 @@
- GitHub Actions 将会根据你设置的定时任务(例如每三天一次)自动运行脚本。
- 如果需要手动触发,可以在 Actions 页面手动运行工作流。

#### 示例 Secrets 和获取方法总结

- **TELEGRAM_BOT_TOKEN**
- 示例值: `1234567890:ABCDEFghijklmnopQRSTuvwxyZ`
- 获取方法: 在 Telegram 中使用 `@BotFather` 创建 Bot 并获取 API Token。

- **TELEGRAM_CHAT_ID**
- 示例值: `1234567890`
- 获取方法: 发送一条消息给你的 Bot,然后访问 `https://api.telegram.org/bot<your_bot_token>/getUpdates` 获取 Chat ID。

- **ACCOUNTS_JSON**
- 示例值:
```json
[
{"username": "serv00的账号", "password": "serv00的密码", "panel": "panel6.serv00.com"},
{"username": "ct8的账号", "password": "ct8的密码", "panel": "panel.ct8.pl"},
{"username": "user2", "password": "password2", "panel": "panel6.serv00.com"}
]
```
- 获取方法: 创建一个包含serv00账号信息的 JSON 文件,并将其内容添加到 GitHub 仓库的 Secrets 中。

### 注意事项

- **保密性**: Secrets 是敏感信息,请确保不要将它们泄露到公共代码库或未授权的人员。
- **更新和删除**: 如果需要更新或删除 Secrets,可以通过仓库的 Secrets 页面进行管理。

通过以上步骤,你就可以成功将代码 fork 到你的仓库下并运行它了。如果需要进一步的帮助或有其他问题,请随时告知!
通过以上步骤,你就可以成功将代码 fork 到你的仓库下并运行它了。
83 changes: 29 additions & 54 deletions login_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@
import requests
import os

# 从环境变量中获取 Telegram Bot Token 和 Chat ID
TELEGRAM_BOT_TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')
TELEGRAM_CHAT_ID = os.getenv('TELEGRAM_CHAT_ID')
# 从环境变量中获取推送加 TOKEN
PUSHPLUS_TOKEN = os.getenv('PUSHPLUS_TOKEN')

def format_to_iso(date):
return date.strftime('%Y-%m-%d %H:%M:%S')
Expand All @@ -20,20 +19,17 @@ async def delay_time(ms):
# 全局浏览器实例
browser = None

# telegram消息
message = 'serv00&ct8自动化脚本运行\n'

async def login(username, password, panel):
async def login(username, password, panelnum):
global browser

page = None # 确保 page 在任何情况下都被定义
serviceName = 'ct8' if 'ct8' in panel else 'serv00'

try:
if not browser:
browser = await launch(headless=True, args=['--no-sandbox', '--disable-setuid-sandbox'])

page = await browser.newPage()
url = f'https://{panel}/login/?next=/'
url = f'https://panel{panelnum}.serv00.com/login/?next=/'
await page.goto(url)

username_input = await page.querySelector('#id_username')
Expand All @@ -44,7 +40,7 @@ async def login(username, password, panel):
await page.type('#id_password', password)

login_button = await page.querySelector('#submit')
if login_button:
if (login_button):
await login_button.click()
else:
raise Exception('无法找到登录按钮')
Expand All @@ -59,75 +55,54 @@ async def login(username, password, panel):
return is_logged_in

except Exception as e:
print(f'{serviceName}账号 {username} 登录时出现错误: {e}')
print(f'serv00账号 {username} 登录时出现错误: {e}')
return False

finally:
if page:
await page.close()

async def main():
global message
message = 'serv00&ct8自动化脚本运行\n'

try:
async with aiofiles.open('accounts.json', mode='r', encoding='utf-8') as f:
accounts_json = await f.read()
accounts = json.loads(accounts_json)
except Exception as e:
print(f'读取 accounts.json 文件时出错: {e}')
return
async with aiofiles.open('accounts.json', mode='r', encoding='utf-8') as f:
accounts_json = await f.read()
accounts = json.loads(accounts_json)

for account in accounts:
username = account['username']
password = account['password']
panel = account['panel']
panelnum = account['panelnum']

serviceName = 'ct8' if 'ct8' in panel else 'serv00'
is_logged_in = await login(username, password, panel)
is_logged_in = await login(username, password, panelnum)

if is_logged_in:
now_utc = format_to_iso(datetime.utcnow())
now_beijing = format_to_iso(datetime.utcnow() + timedelta(hours=8))
success_message = f'{serviceName}账号 {username} 于北京时间 {now_beijing}(UTC时间 {now_utc})登录成功!'
message += success_message + '\n'
success_message = f'serv00账号 {username} 登录成功!'
print(success_message)
send_pushplus_message(success_message)
else:
message += f'{serviceName}账号 {username} 登录失败,请检查{serviceName}账号和密码是否正确。\n'
print(f'{serviceName}账号 {username} 登录失败,请检查{serviceName}账号和密码是否正确。')
print(f'serv00账号 {username} 登录失败,请检查serv00账号和密码是否正确。')

delay = random.randint(1000, 8000)
await delay_time(delay)

message += f'所有{serviceName}账号登录完成!'
await send_telegram_message(message)
print(f'所有{serviceName}账号登录完成!')

async def send_telegram_message(message):
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
print('所有serv00账号登录完成!')

# 发送推送加消息
def send_pushplus_message(message):
url = f"http://www.pushplus.plus/send"
payload = {
'chat_id': TELEGRAM_CHAT_ID,
'text': message,
'reply_markup': {
'inline_keyboard': [
[
{
'text': '问题反馈❓',
'url': 'https://t.me/yxjsjl'
}
]
]
}
'token': PUSHPLUS_TOKEN,
'title': 'serv00账号登录通知',
'content': message,
'template': 'html'
}
headers = {
'Content-Type': 'application/json'
}
try:
response = requests.post(url, json=payload, headers=headers)
if response.status_code != 200:
print(f"发送消息到Telegram失败: {response.text}")
except Exception as e:
print(f"发送消息到Telegram时出错: {e}")
response = requests.post(url, json=payload, headers=headers)
if response.status_code != 200:
print(f"发送消息到推送加失败: {response.text}")

if __name__ == '__main__':
asyncio.run(main())
# 运行主程序
asyncio.run(main())