马春杰杰 Exit Reader Mode

利用亚马逊云科技的lightsail服务器搭建电报自动签到系统

lightsail亚马逊云科技出品的类似轻量服务器的产品,不过比国内这些平台的价格划算,带宽很高,可以用来做很多事情。这次介绍一下如何利用lightsail搭建电报自动签到系统~

使用前可以先注册一个亚马逊云科技的账号,可以免费使用3个月~~

1、创建lightsail实例

打开链接:Lightsail (amazon.com),然后点击创建实例:

这里我们选择Ubuntu22.04 LTS版本就行,纯系统就可以,不需要附带其他APP

注意提前把默认的key下载下来:

然后我们可以选择一个合适的套餐,这里我以5美元/月的举例:

最后随便写个名字,创建实例即可~

接下来稍等片刻,新的实例就创建好了~

打开本地终端,登陆实例:

ssh ubuntu@57.180.12.217 -i LightsailDefaultKey-ap-northeast-1.pem

有可能会报错:

$ ssh ubuntu@57.180.12.217 -i LightsailDefaultKey-ap-northeast-1.pem 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'LightsailDefaultKey-ap-northeast-1.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "LightsailDefaultKey-ap-northeast-1.pem": bad permissions
ubuntu@57.180.12.217: Permission denied (publickey).

无妨,这是因为权限太低导致的,我们可以更改key的权限:

chmod 600 LightsailDefaultKey-ap-northeast-1.pem

到这里,实例的创建就完成了,接下来安装Python的运行环境

2、Python运行环境

默认是安装了Python3的,不过pip3没有安装,我们手动装一下

sudo apt update
sudo apt install python3-pip

ubuntu@ip-172-26-4-98:~$ sudo apt install python3-pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  build-essential bzip2 cpp cpp-11 dpkg-dev fakeroot fontconfig-config fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libatomic1
  libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libdeflate0 libdpkg-perl libexpat1 libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libgcc-11-dev libgd3 libgomp1 libisl23 libitm1 libjbig0 libjpeg-turbo8
  libjpeg8 libjs-jquery libjs-sphinxdoc libjs-underscore liblsan0 libmpc3 libnsl-dev libpython3-dev libpython3-stdlib libpython3.10 libpython3.10-dev libpython3.10-minimal libpython3.10-stdlib libquadmath0 libstdc++-11-dev libtiff5
  libtirpc-dev libtsan0 libubsan1 libwebp7 libxpm4 linux-libc-dev lto-disabled-list make manpages-dev python3 python3-dev python3-minimal python3-wheel python3.10 python3.10-dev python3.10-minimal rpcsvc-proto zlib1g-dev
Suggested packages:
  bzip2-doc cpp-doc gcc-11-locales debian-keyring g++-multilib g++-11-multilib gcc-11-doc gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-11-multilib apache2 | lighttpd | httpd glibc-doc bzr libgd-tools
  libstdc++-11-doc make-doc python3-doc python3-tk python3-venv python3.10-venv python3.10-doc binfmt-support
The following NEW packages will be installed:
  build-essential bzip2 cpp cpp-11 dpkg-dev fakeroot fontconfig-config fonts-dejavu-core g++ g++-11 gcc gcc-11 gcc-11-base javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libatomic1
  libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libdeflate0 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libgcc-11-dev libgd3 libgomp1 libisl23 libitm1 libjbig0 libjpeg-turbo8 libjpeg8
  libjs-jquery libjs-sphinxdoc libjs-underscore liblsan0 libmpc3 libnsl-dev libpython3-dev libpython3.10-dev libquadmath0 libstdc++-11-dev libtiff5 libtirpc-dev libtsan0 libubsan1 libwebp7 libxpm4 linux-libc-dev lto-disabled-list make
  manpages-dev python3-dev python3-pip python3-wheel python3.10-dev rpcsvc-proto zlib1g-dev
The following packages will be upgraded:
  libexpat1 libpython3-stdlib libpython3.10 libpython3.10-minimal libpython3.10-stdlib python3 python3-minimal python3.10 python3.10-minimal
9 upgraded, 64 newly installed, 0 to remove and 71 not upgraded.
Need to get 78.8 MB of archives.
After this operation, 239 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

当然, 中间可能会有提示,不用管,默认OK即可:

接下来,我们安装一个必要的包:telethon

pip3 install telethon

ubuntu@ip-172-26-4-98:~$ pip3 install telethon
Defaulting to user installation because normal site-packages is not writeable
Collecting telethon
  Downloading Telethon-1.37.0.tar.gz (620 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 620.2/620.2 KB 13.3 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting rsa
  Downloading rsa-4.9-py3-none-any.whl (34 kB)
Collecting pyaes
  Downloading pyaes-1.6.1.tar.gz (28 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: pyasn1>=0.1.3 in /usr/lib/python3/dist-packages (from rsa->telethon) (0.4.8)
Building wheels for collected packages: telethon, pyaes
  Building wheel for telethon (pyproject.toml) ... done
  Created wheel for telethon: filename=Telethon-1.37.0-py3-none-any.whl size=694380 sha256=1ba2c5854264adac12d77ee87b49b736cccfad3e46494e4bdc2a496d697b4fba
  Stored in directory: /home/ubuntu/.cache/pip/wheels/8b/3c/0a/91d35499092d78120d71039a156b5c450f3ca00f95b4d594a4
  Building wheel for pyaes (setup.py) ... done
  Created wheel for pyaes: filename=pyaes-1.6.1-py3-none-any.whl size=26363 sha256=169253b7b2fe4e636e4c990b40c2ca0fb813177a0ff9cf354cfda15bf29fdd6a
  Stored in directory: /home/ubuntu/.cache/pip/wheels/d6/84/5f/ea6aef85a93c7e1922486369874f4740a5642d261e09c59140
Successfully built telethon pyaes
Installing collected packages: pyaes, rsa, telethon
  WARNING: The scripts pyrsa-decrypt, pyrsa-encrypt, pyrsa-keygen, pyrsa-priv2pub, pyrsa-sign and pyrsa-verify are installed in '/home/ubuntu/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pyaes-1.6.1 rsa-4.9 telethon-1.37.0

3、自动签到脚本

在进一步签到之前,我们需要获取电报的API_IDHASH,点击链接进行申请即可,这一点不多说。

拿到API_IDHASH之后,在服务器新建一个Python文件,填入:

# -*- coding: utf-8 -*-
import os
import time
from telethon import TelegramClient, events, sync
api_id = [xxx]  #输入api_id,一个账号一项
api_hash = ['xxx']  #输入api_hash,一个账号一项
session_name = api_id[:]
for num in range(len(api_id)):
  session_name[num] = "id_" + str(session_name[num])
  client = TelegramClient(session_name[num], api_id[num], api_hash[num])
  client.start()
  client.send_message("@xxxxx", '签到')  #第一项是机器人ID,第二项是发送的文字
  time.sleep(5)  #延时5秒,等待机器人回应(一般是秒回应,但也有发生阻塞的可能)
  client.send_read_acknowledge("@xxxxx")  #将机器人回应设为已读
  print("Done! Session name:", session_name[num])
  
os._exit(0)

注意将里面的必要信息改成自己的。

最后运行:python3 xx.py即可

当然,亚马逊云科技不光这些可以用,还有很多免费的,大家可以去瞅瞅,地址:亚马逊云科技