Python实现Telegram自动签到脚本

0x00 前言

Telegram上有很多需要每天签到的东西,利用脚本和服务器可以实现自动化签到。

0x01 步骤

  1. https://my.telegram.org/auth 申请API,需要 api_idapi_hash
  2. 编写脚本,需要签到的公众号和指定命令与上步得到的 api_idapi_hash
  3. 部署在服务器,利用crontab进行自动化签到

0x02 脚本

此处以t00ls的签到为例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import time
from telethon import TelegramClient, events, sync

#填写自己的api信息
api_id = your_api_id
api_hash = 'your_api_hash'

client = TelegramClient('t00ls_sign', api_id, api_hash)
client.start()

client.send_message('T00lsBot', '/start')

@client.on(events.NewMessage(chats=('T00lsBot')))
async def handler(event):
await event.click(0)
print("[*]T00ls已执行签到.")
if(event.text[:3] == '尊敬的'):
print("[*]成功签到.")
await client.disconnect()
elif("签过到" in event.text):
print("[!]T00ls今天已经签过到了.")
else:
print("[!]T00ls签到异常.")

with client:
client.add_event_handler(handler)
client.disconnected
#client.run_until_disconnected()

脚本运行后会出现连接错误的提示,是因为国内把Telegram墙掉了,可以开代理运行脚本即可。运行成功后会提示输入手机号和验证码,输入一次以后就可以不用输入了。

0x03 部署

因为Telegram在国内被墙,如果直接将脚本部署到国内云上会出现连接错误的提示。我使用了v2ray + proxychains + crontab的形式来实现脚本自动执行。

1、V2ray的安装

在线安装:

1
2
sudo su
bash <(curl -L -s https://install.direct/go.sh)

/etc/v2ray/config.json配置梯子,或者使用V2rayN导入节点后导出json文件,在复制粘贴进来。

之后就是开启v2ray服务。

1
2
3
4
5
6
7
8
# 查看 v2ray 进程状态
systemctl status v2ray

# 启动
systemctl start v2ray

# 重启
systemctl restart v2ray
2、Proxychians的安装

安装下载源码:

1
git clone https://github.com/rofl0r/proxychains-ng

编译和安装:

1
2
3
4
5
6
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
make install
make install-config
cd .. && rm -rf proxychains-ng

/etc/proxychains.conf里配置,[ProxyList]下添加:

1
socks5 127.0.0.1 1080

不要忘了在服务器控制台防火墙放行1080端口。

3、运行
1
proxychians4 python auto_signup.py

将上面的命令写入crontab规则,规则列表在/etc/crontab,里面有详细说明,在此不表。


Python实现Telegram自动签到脚本
https://k1nm0.com/2020/04/07/Python实现Telegram自动签到脚本/
作者
K1nm0
发布于
2020年4月7日
许可协议