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

关于登录的问题 #26

Open
nashor1 opened this issue Mar 4, 2023 · 10 comments
Open

关于登录的问题 #26

nashor1 opened this issue Mar 4, 2023 · 10 comments

Comments

@nashor1
Copy link

nashor1 commented Mar 4, 2023

成功启动了项目,停止之后切换成nohup运行项目失败
image
image
nohup运行无法交互导致无法登录,这个问题怎么解决比较好
我的思路是,添加扫码登录,这样我们用nohup启动项目的时候可以通过日志来查看二维码实现扫码登录,又或者把二维码打印到本地服务器的一个文件路径上,打开那个文件扫码登录,让用户可以选择性的登录,但是扫码登录也有局限,如果服务器使用扫码登录可能会返回网络环境复杂,会要求用户扫码手机和服务器处于同一网络下,解决办法是,扫码之后保存一份qq登录的cookie,先在本地扫码登录保留登录凭证之后,用户可以上传本地的登录凭证到服务器,绕过qq的登录检测,这样可以解决大部分问题,否则一些登录了太多次的qq号就像我的号一样,每一次登录都会检测一次。
总的来说登录这一块需要还是比较难弄的,大家如果nohup挂好机器人到服务器就不要随便下线机器人,否则账号风险系数高了之后就挂不上去了

@nashor1
Copy link
Author

nashor1 commented Mar 4, 2023

还有一种思路是将打包好的jar文件再次打包成docker,只需把jar包跟Dockerfile放在同一目录,用docker build打包一下即可,然后用docker的方式来执行项目,这样便可以达到跟nohup执行同等的效果,当然docker打包有关的知识如果需要的话我们可以后面再拓展讲讲,目前我的qq号就是用docker的方式来运行的,因为连续登录登出太多次风险系数太高了(流泪)
唯一需要注意的是,如果用新项目打包的jar包再次打包成docker 镜像,走代理的话可能会出现问题

@ashinnotfound
Copy link
Owner

我回滚了mirai的版本依赖,现在不会需要重复登录了

@nashor1
Copy link
Author

nashor1 commented Mar 5, 2023

这个貌似跟我的qq号和服务器有关

@ashinnotfound
Copy link
Owner

这个貌似跟我的qq号和服务器有关

是不是出现一直需要滑动验证码的情况

@nashor1
Copy link
Author

nashor1 commented Mar 5, 2023

对对对

@ashinnotfound
Copy link
Owner

对对对

这是被风控了,只能过会再试试了😢很烦

@nashor1
Copy link
Author

nashor1 commented Mar 5, 2023

我隔半天试一次,而且分别换不同的号,结果还是不行,被迫无奈只能用docker来运行我的jar包

@nashor1
Copy link
Author

nashor1 commented Mar 5, 2023

把jar项目打包成docker项目

起因:我的qq号因为连续登录多次导致账号风险系数过高(可能服务器的ip也有问题),每次登录都需要验证码,chat_qqbot项目打包好一个jar包运行就可以了,但是由于账号风险系数过高,导致我不能在linux上使用nohup来执行这个jar,原因是nohup命令无法交互,导致无法完成滑动验证码,无法登录,即使换了几个qq号码也无法登录。

在一番冥思苦想后,决定使用docker来执行我的chatqqbot项目,用jar包构建docker项目,具体操作如下:

1、创建一个空的文件夹,里面放2个文件Dockerfile和demo.jar,Dockerfile内容如下

FROM openjdk:8-jdk-alpine  #声明jdk
VOLUME /root/docker_bot   #项目的运行路径,最好是选择当前目录
ADD demo.jar app.jar   #为你的docker添加一个demo.jar然后重命名为app.jar	
ENTRYPOINT ["java","-jar","/app.jar"]  #这里是启动docker后执行的命令,空格处一律按照格式用逗号和引号分开

2、搞定上面的内容后,开始生成docker镜像

docker build -t docker_image_name  . #docker_image_name是你的镜像名,注意命令最后的空格和点!!!

3、生成镜像之后,查看镜像

docker images

image

这条命令可以显示你docker的镜像名字、tag、和ID

4、启动镜像命令如下

docker run -i -t --net=host docker_image_name:tag /bin/bash

其中-i -t两个一般联合使用,指的是docker启动的前台交互模式,-net是docker使用宿主机的网络,这样方便我们使用梯子来走chat的apikey,然后后面的就是格式是 镜像名:tag /bin/bash代表你要执行命令

docker run -i -t --net=host docker_bot:lastest /bin/bash #这条启动命令就是图片上docker启动的格式,参照格式修改一下就好

5、启动成功以后我们要退出这个docker让他后台执行,按ctrl+P+Q

6、接下来是一些docker的增删改查的命令

docker ps -a      #查看进程
docker rm -f <ID>   #删除一个容器
docker rmi <image>   #删除一个镜像
docker attach <ID>   #进入一个容器

img

在上面的时候我一直不知道docker启动有--net参数,当时的情况是,centos里面用docker搭了一个v2ray(梯子),然后项目也是docker,一时半会搞不清楚网络的流向了,当时尝试把v2的网络端口打开,然后docker_bot走v2的出网端口,但是屡次尝试仍然是失败,始终无法连接到chat的apikey,最后看到--net=host参数可以直接继承宿主机的网络,这样我只需要解决宿主机能否访问外网即可解决docker内部网络问题,至此,linux无法使用nohup交互的问题总算是用docker来解决了。

@ashinnotfound
Copy link
Owner

把jar项目打包成docker项目

起因:我的qq号因为连续登录多次导致账号风险系数过高(可能服务器的ip也有问题),每次登录都需要验证码,chat_qqbot项目打包好一个jar包运行就可以了,但是由于账号风险系数过高,导致我不能在linux上使用nohup来执行这个jar,原因是nohup命令无法交互,导致无法完成滑动验证码,无法登录,即使换了几个qq号码也无法登录。

在一番冥思苦想后,决定使用docker来执行我的chatqqbot项目,用jar包构建docker项目,具体操作如下:

1、创建一个空的文件夹,里面放2个文件Dockerfile和demo.jar,Dockerfile内容如下

image

FROM openjdk:8-jdk-alpine  #声明jdk
VOLUME /root/docker_bot   #项目的运行路径,最好是选择当前目录
ADD demo.jar app.jar   #为你的docker添加一个demo.jar然后重命名为app.jar	
ENTRYPOINT ["java","-jar","/app.jar"]  #这里是启动docker后执行的命令,空格处一律按照格式用逗号和引号分开

2、搞定上面的内容后,开始生成docker镜像

docker build -t docker_image_name  . #docker_image_name是你的镜像名,注意命令最后的空格和点!!!

3、生成镜像之后,查看镜像

docker images

image

这条命令可以显示你docker的镜像名字、tag、和ID

4、启动镜像命令如下

docker run -i -t --net=host docker_image_name:tag /bin/bash

其中-i -t两个一般联合使用,指的是docker启动的前台交互模式,-net是docker使用宿主机的网络,这样方便我们使用梯子来走chat的apikey,然后后面的就是格式是 镜像名:tag /bin/bash代表你要执行命令

5、启动成功以后我们要退出这个docker让他后台执行,按ctrl+P+Q

6、接下来是一些docker的增删改查的命令

docker ps -a      #查看进程
docker rm -f <ID>   #删除一个容器
docker rmi <image>   #删除一个镜像
docker attach <ID>   #进入一个容器

img

在上面的时候我一直不知道docker启动有--net参数,当时的情况是,centos里面用docker搭了一个v2ray(梯子),然后项目也是docker,一时半会搞不清楚网络的流向了,当时尝试把v2的网络端口打开,然后docker_bot走v2的出网端口,但是屡次尝试仍然是失败,始终无法连接到chat的apikey,最后看到--net=host参数可以直接继承宿主机的网络,这样我只需要解决宿主机能否访问外网即可解决docker内部网络问题,至此,linux无法使用nohup交互的问题总算是用docker来解决了。

牛的

@Lukangkang123
Copy link

可以用screen 分屏命令来代替nohup啊

@ashinnotfound ashinnotfound unpinned this issue Mar 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants