收起左侧

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

15
回复
1225
查看
[ 复制链接 ]

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

主题

8

回帖

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

主题

8

回帖

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

主题

8

回帖

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

主题

8

回帖

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

主题

8

回帖

0

牛值

江湖小虾

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

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

0

主题

8

回帖

0

牛值

江湖小虾

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

搞定了,删掉这个

本帖子中包含更多资源

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

x

0

主题

8

回帖

0

牛值

江湖小虾

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

感谢大神指点,我终于搞定了,就是clouflared这一步,原来隧道后面要填上域名指向内网的5678,这一步,我折腾时间太久了。不过终于还是搞定了,十分感谢。

0

主题

8

回帖

0

牛值

江湖小虾

2025-8-29 13:02:55 显示全部楼层

大神,麻烦看下,、上周还是成功的,这周出现了如下错误,

Problem in node ‘收取馒头邮件‘

The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. (item 0)

麻烦看下如何调整,谢谢!

3

主题

6

回帖

0

牛值

江湖小虾

2025-9-13 20:15:43 显示全部楼层

有crash 也打不开馒头网,怎么回事?

6

主题

5

回帖

0

牛值

fnOS系统内测组

2025-10-7 10:41:49 显示全部楼层

好用,已经用上了

6

主题

134

回帖

0

牛值

初出茅庐

社区上线纪念勋章

2025-10-7 14:00:50 显示全部楼层

其实用moviepilot不就行了,另外求个💊,来个小站,先不弄馒头的

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则