收起左侧

使用N8N实现馒头自动登录防止被ban

11
回复
463
查看
[ 复制链接 ]

1

主题

3

回帖

0

牛值

江湖小虾

2025-8-8 15:30:24 显示全部楼层 阅读模式

本文目标是解决馒头网站的定期自动登录的问题;防止号养好了,但也没了。。毕竟40天的限期,一不留神就忘了。

直入正题,首先介绍下用到的 docker 工具:

  1. n8n,一个图形化的低代码自动化流程平台,类似扣子、dify
  2. chromium,chrome的开源浏览器内核,用来模拟用户操作
  3. clash 梯子,如果没有点这 -> “最便宜的VPN
  4. cloudflared,用来解析你的域名

环境部署

环境部署使用 docker compose 方式,具体配置如下。

n8n

services:
  n8n:
    container_name: n8n
    image: n8nio/n8n:latest
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.wangqiukeke.top # 修改为你自己的域名
      - WEBHOOK_URL=https://n8n.wangqiukeke.top # 修改为你自己的域名,注意格式保持一致
      - N8N_SECURE_COOKIE=false   # 新加入的环境变量,默认即可 
      - GENERIC_TIMEZONE=Asia/Shanghai # 时区
      - N8N_PORT=5678
      - N8N_DEFAULT_LOCALE=zh-CN   # 默认显示中文
      - N8N_PROXY_HOPS=1
      - N8N_RUNNERS_ENABLED=true
      - HTTP_PROXY=http://192.168.3.100:7890 # 修改为你的代理服务,见下文的 clash
      - HTTPS_PROXY=http://192.168.3.100:7890
      - NO_PROXY=localhost,127.0.0.1
      - PUID=0
      - PGID=0
    volumes:
      - ./dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist # 国际化,教程参考:https://blog.csdn.net/weixin_47831992/article/details/147632297
      - ./n8n:/home/node/.n8n    # 冒号前面映射n8n-data文件夹绝对路径
      - ./n8n-data:/home/node/n8ndata
    restart: unless-stopped

chromium

浏览器内核,用来模拟用户的真实输入,具体使用见下文的 n8n puppeteer 配置

services:
  chromium:
    container_name: chromium
    image: ghcr.io/browserless/chromium:latest
    ports:
      - "3003:3000"
    environment:
      - GENERIC_TIMEZONE=Asia/Shanghai # 时区
      - HTTP_PROXY=http://192.168.3.100:7890 # 代理配置
      - HTTPS_PROXY=http://192.168.3.100:7890
      - NO_PROXY=localhost,127.0.0.1
      - PUID=0
      - PGID=0
    restart: unless-stopped

clash

安装梯子,不多解释。梯子不仅可以作为 docker 工具的代理,也可以为局域网内的设备提供代理,详情请自行搜索。

如果你还没有便宜的 VPN 的话,我推荐你用 “全网最便宜的VPN”,99一年,每月 100G流量!

services:
  clash:
    image: dreamacro/clash-premium:latest
    container_name: clash
    restart: unless-stopped
  
    # 网络配置
    network_mode: host
    ports:
      - "7890:7890"   # HTTP 代理端口
      - "7891:7891"   # SOCKS5 代理端口
      - "9090:9090"   # Web 控制面板
  
    # 挂载配置文件和数据目录
    volumes:
      - ./config:/root/.config/clash
      - ./ui:/ui
  
    # 环境变量
    environment:
      - TZ=Asia/Shanghai
  
    # 健康检查
    healthcheck:
      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:9090"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
  
    # DNS 配置
    dns:
      - 114.114.114.114
      - 8.8.8.8

cloudflared

cloudflared 主要功能是将你的域名解析到 nas 上,推荐通过 tunnel 的方式,支持 https、去除端口,不需要你有独立的 IP!具体部署教程自行搜索,如果有困难可以留言告诉我。

services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    network_mode: host
    # 明确指定启动命令
    command: tunnel --no-autoupdate run --token 修改为你自己的token!!!
    volumes:
      - ./cloudflared:/etc/cloudflared
      - ./logs:/var/log/cloudflared
    environment:
      - HTTP_PROXY=http://192.168.3.100:7890 # 推荐使用代理,不然会经常断线
      - HTTPS_PROXY=http://192.168.3.100:7890
      - NO_PROXY=localhost,127.0.0.1
      - TUNNEL_TOKEN=修改为你自己的token!!!
    healthcheck:
      test: ["CMD-SHELL", "cloudflared tunnel info || exit 1"]
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 30s

复制完记得修改你自己的 token

n8n 工作流搭建

以我的馒头账号为例,注册邮箱是 gmail,其他账号需要自行测试。

image.png

在开始之前,需要为 n8n 安装 n8n-nodes-puppeteer:点击左下角名字旁边的设置 -> 社区节点 -> 安装。

下面我们开始搭建工作流吧。

1. 添加触发器

1.1 点 + 号,创建一个触发器,选择 按计划,如图:

image.png

1.2 配置你的登录计划,这里配置的是每周五的早10点执行

image.png

2. 登录节点

2.1 添加 puppeteer 节点,点 + 号、搜索 puppeteer 并进入,选择 Run Custom Script

image.png

2.2 输入下面脚本,将 你的账号你的密码你的邮箱 修改为你自己的

// Navigate to an IP lookup service
await $page.goto('https://next.m-team.cc/login')

// Perform login
await $page.waitForSelector('#username')
await $page.type('#username', '你的账号')
await $page.type('#password', '你的密码')
await $page.keyboard.press('Enter')

// email
await $page.waitForSelector('#email')
await $page.type('#email', '你的邮箱')
await $page.click('button.ant-btn-default.ant-btn-color-default.ant-btn-variant-outlined')
await $page.waitForNetworkIdle()

// Return the result in the required format
const content = await $page.evaluate(() => document.querySelector('body').innerHTML)

return [{ content }]

2.3 添加 Browser WebSocket EndPoint,这里的地址和端口见你在环境中安装的 chromium

image.png

3. 等待一分钟

等待一分钟,让验证码飞一会儿。添加 wait 节点,配置如下

image.png

4. 收取馒头邮件

4.1 添加 GMail 节点,选择 Get many messages

image.png

4.2 配置谷歌凭证(按系统引导,自行研究),Limit 填 1,添加 Filters -> Sender,输入框中输入:web@m-team.cc

image.png

5. 解析验证码

5.1 添加 Code 节点,Mode 选择 Run Once for All ItemsLanguage 选择 JavaScript,并输入以下代码

let code = null
const reg = /驗證碼:\s+(\d{6}),/
for (const item of $input.all()) {
  const matches = reg.exec(item.json.text)
  code = matches?.[1]
}

return { json: { code }}

6. 输入验证码并登录

6.1 与步骤2一样,添加 Puppeteer 自定义脚本节点,输入以下脚本,并替换你的账号信息

// Navigate to an IP lookup service
await $page.goto('https://next.m-team.cc/login')

// Perform login
await $page.waitForSelector('#username')
await $page.type('#username', '你的账号')
await $page.type('#password', '你的密码')
await $page.keyboard.press('Enter')

// email
await $page.waitForSelector('#email')
await $page.type('#email', '你的邮箱')
// 验证码
await $page.type('input.ant-input.ant-input-outlined', $json.code)

// 登录
await $page.click('button.ant-btn-primary.ant-btn-variant-solid.ant-btn-lg')
await $page.waitForNetworkIdle()

// Return the result in the required format
const content = await $page.evaluate(() => document.querySelector('body').innerHTML)

return [{ content }]

6.2 添加 Browser WebSocket Endpoint Option:ws://192.168.3.100:3003(同步骤2)

image.png

如果你成功的做到了这一步,那么恭喜你!配置完成了,点击 执行工作流程 测试下吧!

如果不出意外,你已经成功创建了自动登录的工作流,最后激活一下,点击上方的活动开关并打开:

image.png

如果你在某一步出了意外,请留言告诉我,双击点开这个节点,截图发到评论区吧~

收藏
送赞 2
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-14 08:57:44 显示全部楼层
请问,群辉IP指向旁路由,能上所有网站,还需要填写这些吗?      - HTTP_PROXY=http://192.168.3.100:7890 # 修改为你的代理服务,见下文的 clash       - HTTPS_PROXY=http://192.168.3.100:7890,而且有域名解析了,是否还需要cloudflare的?
不用了,这个主要是梯子的功能~  详情 回复
2025-8-15 11:01

1

主题

2

回帖

0

牛值

江湖小虾

2025-8-14 15:38:33 显示全部楼层
二级验证是动态验证码而不是邮箱的,该怎么弄?

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-14 21:29:22 显示全部楼层

image.png

Gmail邮箱这一段始终出现错误,在
image.png这里是填写locallhost:5678吗?请教

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
报错是因为n8n的GMail节点访问不了localhost,需要按cloudflared配置个外网 域名,不用备案,没域名花1块钱就能注册一个  详情 回复
2025-8-15 11:03

1

主题

3

回帖

0

牛值

江湖小虾

2025-8-15 11:01:41 楼主 显示全部楼层
Alex_UeN94 发表于 2025-8-14 08:57
请问,群辉IP指向旁路由,能上所有网站,还需要填写这些吗?      - HTTP_PROXY=http://192.168.3.100:7890 ...

不用了,这个主要是梯子的功能~

1

主题

3

回帖

0

牛值

江湖小虾

2025-8-15 11:03:39 楼主 显示全部楼层
Alex_UeN94 发表于 2025-8-14 21:29
Gmail邮箱这一段始终出现错误,在
这里是填写locallhost:5678吗?请教

报错是因为n8n的GMail节点访问不了localhost,需要按cloudflared配置个外网 域名,不用备案,没域名花1块钱就能注册一个
cloudflare也搞了,我有个主域名是在cloudflare解析的,目前在群辉的docker下cloudflare启动成功后一会儿就会停掉,而且谷歌邮箱验证这里还是不成功,如果可以的话能否帮忙搞一下,谢谢!可以加我QQ:86895047,谢谢  详情 回复
2025-8-17 11:06
我有域名已经解析到了群辉的ipv6地址,然后通过群辉docker里的lucky的web服务将这个域名的二级域名例如n8n.abc.com加上端口号1234指向了群辉下面docker里安装的n8n服务的管理页面,在外网可以通过n8n.abc.com:1234正  详情 回复
2025-8-16 08:40

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-16 08:40:51 显示全部楼层
王求可可 发表于 2025-8-15 11:03
报错是因为n8n的GMail节点访问不了localhost,需要按cloudflared配置个外网 域名,不用备案,没域名花1块 ...

我有域名已经解析到了群辉的ipv6地址,然后通过群辉docker里的lucky的web服务将这个域名的二级域名例如n8n.abc.com加上端口号1234指向了群辉下面docker里安装的n8n服务的管理页面,在外网可以通过n8n.abc.com:1234正常访问到n8n服务的管理页面,就是卡在谷歌邮箱的验证这里?试过把https://n8n.abc.com:1234/rest/oauth2-credential/callback添加到谷歌认证这里还是不行,浏览器打开https://n8n.abc.com:1234/rest/oauth2-credential/callback显示Error: Insufficient parameters for OAuth2 callback。麻烦帮忙分析下该怎么弄,我也试过通过群辉的反代将https://n8n.abc.com指向n8n服务的管理页面,也成功指向n8n服务的管理页面,但是没有证书,无法使用,把Lucky生成的证书导进去也不行。

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-17 11:06:26 显示全部楼层
王求可可 发表于 2025-8-15 11:03
报错是因为n8n的GMail节点访问不了localhost,需要按cloudflared配置个外网 域名,不用备案,没域名花1块 ...

cloudflare也搞了,我有个主域名是在cloudflare解析的,目前在群辉的docker下cloudflare启动成功后一会儿就会停掉,而且谷歌邮箱验证这里还是不成功,如果可以的话能否帮忙搞一下,谢谢!可以加我QQ:86895047,谢谢
可以按照我的配置,使用 cloudflared tunnel + 代理的方式(防掉线),不用担心 ipv6 还是 v4 的问题,也自动管理证书,我看你研究的差不多了,估计就差这一步~  详情 回复
2025-8-18 09:48

1

主题

3

回帖

0

牛值

江湖小虾

2025-8-18 09:48:46 楼主 显示全部楼层
Alex_UeN94 发表于 2025-8-17 11:06
cloudflare也搞了,我有个主域名是在cloudflare解析的,目前在群辉的docker下cloudflare启动成功后一会儿 ...

可以按照我的配置,使用 cloudflared tunnel + 代理的方式(防掉线),不用担心 ipv6 还是 v4 的问题,也自动管理证书,我看你研究的差不多了,估计就差这一步~
感谢大神指点,我终于搞定了,就是clouflared这一步,原来隧道后面要填上域名指向内网的5678,这一步,我折腾时间太久了。不过终于还是搞定了,十分感谢。  详情 回复
2025-8-20 20:44
目前卡在群辉docker下clouflare和谷歌认证这里,折腾很久了,搞不定  详情 回复
2025-8-18 12:26

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-18 12:26:36 显示全部楼层
王求可可 发表于 2025-8-18 09:48
可以按照我的配置,使用 cloudflared tunnel + 代理的方式(防掉线),不用担心 ipv6 还是 v4 的问题,也 ...

目前卡在群辉docker下clouflare和谷歌认证这里,折腾很久了,搞不定

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-18 13:20:32 显示全部楼层

搞定了,删掉这个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

7

回帖

0

牛值

江湖小虾

2025-8-20 20:44:01 显示全部楼层
王求可可 发表于 2025-8-18 09:48
可以按照我的配置,使用 cloudflared tunnel + 代理的方式(防掉线),不用担心 ipv6 还是 v4 的问题,也 ...

感谢大神指点,我终于搞定了,就是clouflared这一步,原来隧道后面要填上域名指向内网的5678,这一步,我折腾时间太久了。不过终于还是搞定了,十分感谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则