Skip to content

自动化登录 深信服 Sangfor aTrust 而无需人工干预。提供Docker 镜像,可使得aTrust在路由器上无人交互地自动运行、登录

Notifications You must be signed in to change notification settings

Airmole/shellbox-aTrust

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aTrustLogin

本项目提供了一个自动化的深信服 Sangfor aTrust 登录的解决方案,无需人工干预即可实现 VPN 联网。项目功能如下:

  • 自动打开 aTrust Web 登录页面
  • 自动填写用户名和密码
  • 自动利用密钥推导 TOTP 两步验证并填写
  • 使用 Cookie 状态绕过验证码
  • KeepAlive 连接保活和掉线/登出重连
  • 支持 Windows、Linux,支持 x86-64 和 ARM64

使用方法

本项目提供Docker方法和通用方法两种方法。

Docker 方法只适用于 Linux 平台,但无需安装配置任何依赖,全自动运行,只需安装 Docker 即可。非常适合软路由、工控机等无图形界面的环境使用。

通用方法适合于所有平台,但需要手动安装 Python 3.8+ 和 Selenium 等依赖库。如果有条件,请使用 Docker 方法。


shellbox 适用于Docker方法,启动参数如下:

docker run -it -d -e ATRUST_OPTS='--portal_address="https://61.181.145.5:8443/passport/v1/public/casLogin" --username=账号 --password=密码' --device /dev/net/tun --cap-add NET_ADMIN -ti -e PASSWORD=VNC密码 -e URLWIN=1 -e PING_ADDR=10.1.254.85 -e PING_INTERVAL=120 -e PING_ADDR_URL=http://10.1.254.98:82/tpl/css/style.css-v $HOME/.atrust-data:/root -p 5999:5901 -p 8999:8888 --sysctl net.ipv4.conf.default.route_localnet=1 --shm-size 256m <DOCKER_CONTAINER_ID>

注意以上启动命令几处需要修改的参数值,username,password,PASSWORD,以及根据情况是否需要修改5999和8999映射端口号,最后还有最重要的DOCKER_CONTAINER_ID


通用方法

首先需要配置浏览器。

在 Windows 下,默认使用系统自带的 Microsoft Edge 浏览器,因此对于 Windows 10 1903+、Windows 11 通常不需要额外安装浏览器和浏览器驱动。如果需要使用其他浏览器,请参考 Selenium 文档 安装对应的浏览器驱动。

在 Linux 下,需要安装 Chromium 浏览器。Debian/Ubuntu 可以使用 apt-get install -y chromium chromium-driver chromium-l10n 命令直接安装。

然后,下载本项目,安装依赖库。提供国内地址和国外地址两个下载方法。如果国外地址下载缓慢,可以使用国内地址:

国外地址:

git clone --depth=1 https://github.com/kenvix/aTrustLogin.git aTrustLogin
cd aTrustLogin/src
pip install -r requirements.txt

然后按照 “程序运行参数说明” 章节启动程序即可。

程序运行参数说明

各参数的说明如下:

  • --portal_address:VPN 门户地址(URL)。例如 https://atrust.moe.edu.cn/
  • --username:VPN 用户名。
  • --password:VPN 密码。
  • --totp_key:TOTP 密钥,用于双因素验证(可选,如果不需要双因素验证则无需提供)。
  • --cookie_tid:用于会话追踪的 cookie ID(可选,用于绕过图形验证码)。具体见后文
  • --cookie_sig:用于会话追踪的 cookie 签名(可选,用于绕过图形验证码)。具体见后文
  • --keepalive:可选。会话保持时间(秒),每隔几秒后刷新页面检查是否掉线。0 为禁用
  • --data_dir:可选。存储 cookies 和会话数据的目录路径。
  • --driver_type:可选。WebDriver 类型(如 "chrome" 或 "edge")。
  • --driver_path:可选。WebDriver 可执行文件路径。
  • --browser_path:可选。浏览器可执行文件路径。
  • --interactive:可选。是否启用交互模式。
  • --wait_atrust:可选。是否等待 aTrust 在指定端口上监听。用于等待 atrust 启动。

示例:

python main.py --portal_address "https://example.com" --username "your_username" --password "your_password" --totp_key "your_totp_key" --cookie_tid "your_cookie_tid" --cookie_sig "your_cookie_sig" --keepalive 300 --interactive True --wait_atrust True

Docker 方法

首先使用下面的命令拉取镜像:

# 拉取最新版本(国外地址,如果下载缓慢请使用国内地址)
docker pull kenvix/atrust-autologin:latest

Docker 镜像如果下载缓慢,可以替换为国内地址。下载后使用 xz -dc 文件名.tar.xz | docker load 命令导入镜像。

国内地址请参见:https://modelscope.cn/models/kenvix/aTrustLoginRepo/files

# 使用国内地址拉取镜像
# 其中 amd64 表示架构x86-64,如果是 ARM64 请替换为 arm64
wget https://modelscope.cn/models/kenvix/aTrustLoginRepo/resolve/master/docker-atrust-autologin-amd64.tar.xz -O - | xz -dc | docker load
docker tag kenvix/docker-atrust-autologin:amd64 kenvix/docker-atrust-autologin:latest

阅读“程序运行参数说明” ,然后请将程序参数填入 ATRUST_OPTS 环境变量中,然后运行 Docker 容器即可。

docker run -it --rm -e ATRUST_OPTS='--portal_address="门户地址" --username=用户名 --password=密码 --totp_key=TOTP密钥 --cookie_tid "your_cookie_tid" --cookie_sig "your_cookie_sig" --device /dev/net/tun --cap-add NET_ADMIN -ti -e PASSWORD=xxxx -e URLWIN=1 -v $HOME/.atrust-data:/root -p 127.0.0.1:5901:5901 -p 127.0.0.1:8888:8888 --sysctl net.ipv4.conf.default.route_localnet=1 --shm-size 256m  kenvix/atrust-autologin:latest

cookie_sig 和 cookie_tid 可以不必设置,如果不设置,首次登录会遇到验证码,但是可以通过 VNC 远程连接服务器(VNC 端口 5901 ),手动输入验证码,然后程序会自动保存 cookie,之后就不会再遇到验证码了。

注意:此命令默认创建的是临时容器!容器停止或系统重启后就会删除!如果需要保存数据并且开机自动启动,请将 --rm 替换为 --restart unless-stopped

默认带有每隔 200 秒的刷新登录保活机制,如果不需要此功能,可以在 ATRUST_OPTS 中添加 --keepalive 0 参数。也可以通过 --keepalive 参数设置保活时间,单位为秒。即 docker run -it -e ATRUST_OPTS='--keepalive 0 ...其他参数' ...其他参数 kenvix/atrust-autologin:latest

如果还需要发包保活功能,请添加 Docker PING_ADDRPING_INTERVAL 环境变量,具体参见此处。指定的服务器地址必须是 VPN 可到达的,例如 docker run -it -e PING_ADDR=172.20.0.1 -e PING_INTERVAL=200 ...其他参数

--shm-size 256m 参数指定的 shm 大小不建议小于 256M,否则可能导致浏览器崩溃。

Docker 容器基于 docker-easyconnect 构建,在此表达感谢。其他的 Docker 参数也可以在这里找到。

如何绕过图形验证码

在第一次登录时,aTrust 会要求输入验证码。为了避免每次登录都需要输入验证码,可以通过以下方法绕过:

  1. 打开 aTrust 登录网页,登录并输入验证码
  2. 在浏览器中打开开发者工具(F12),切换到 Application(应用程序) 选项卡
  3. 在左侧导航栏中找到 Cookies,点击对应的网站地址
  4. 找到名为 tidtid.sig 的两个 Cookie,将其“值”复制下来,填入程序的 --cookie_tid--cookie_sig 参数中即可。

Cookie

About

自动化登录 深信服 Sangfor aTrust 而无需人工干预。提供Docker 镜像,可使得aTrust在路由器上无人交互地自动运行、登录

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 85.2%
  • Dockerfile 8.7%
  • Shell 6.1%