分享链滴自动签到 puppeteer 脚本

之前用 phantomjs,发现有 2 个问题,1 是 phantomjs 太老了且停止维护,导致存在兼容性问题,比如有些网站的 js 无法正常解析导致点击或操作无效,2 有时脚本无法自动退出,我想可能还是兼容性问题,导致报错假死吧。

比如,之前用 phantomjs 实现链滴自动签到时就出现了这两个问题,只能通过 cookie 模拟登录然后再模拟签到,虽然勉强可用,但总归不完美。

于是,最近决定研究下 puppeteer,之前没用 puppeteer 的原因,主要考虑到 puppeteer 需要安装 node 环境等,没有 phantomjs 轻量级。

后来发现 puppeteer 比 phantomjs 功能强大且稳定多了,而且 node 环境感觉目前几乎已经是必备的运行时了。

于是动手重写了链滴社区自动签到的脚本,运行了几天,感觉还不错,还算稳定,现在分享给大家,有需要的朋友可以尝试下。

不知道这个脚本是否违规,如果有不妥之处,请管理员大大们告知下,第一时间删除。

脚本整体流程大概是,先访问签到页面,如果发现未登录则先模拟登录,登录完后再进入签到页进行签到,登录后会记录登录信息,下次再次访问签到页面时会带上登录的 cookie,不需要再次登录了。

代码如下:

使用方法:

  1. 先安装 node 环境,已具备的朋友请跳过,有不懂的朋友请自行搜索,教程很多。
  2. 安装 puppeteer,只要执行 npm i puppeteer 或 npm i puppeteer-core 即可。这里推荐 npm i puppeteer-core 方式,因为这种方式不需要安装 200M+ 的 Chrome For Testing,使用 chrome 浏览器的无头模式即可。但本脚本理论上两种方式都支持,但仅在 puppeteer-core 模式下测试通过。
  3. 把以上脚本保存为 js 文件即可,比如,ld246_signin.js,然后运行 node ld246_signin.js 即可。puppeteer 脚本本质上就是 nodejs 脚本,puppeteer 只不过是 nodejs 的一个模块而已,所以,nodejs 环境下的其他库也可以在 puppeteer 中使用。
  4. node ld246_signin.js 放到定时任务中即可,或者开机运行等。比如,我在 Mac 上是这样运行的 0 */1 * * * cd /Users/xxxx/bin/ld246_sign_in/ && /usr/local/bin/node puppeteer_ld246_singin_wilsons.js > /dev/null 2>&1 &,把它放到 crontab 中,每个整点运行一次,这样就保证总会有一次执行自动签到,如果你想提高命中率就把运行间隔设短一点,比如 10 分钟。不用担心重复运行,已签到的情况下,脚本会自动退出不会重复签到。
  5. 签到结果会放到运行脚本目录下的 log.txt 文件里,可以在这里查看每日签到结果及错误信息等。

注意事项:

  1. 用户名和密码必填,这主要用于未登录情况下的自动登录。
  2. chromePath 这个参数是 chrome 浏览器的安装路径,如果你是 Mac 系统通常不需要变动,如果是 Windows 系统需要根据注释说明进行修改,注意,Windows 的路径需要用 \ 进行转义。如果你使用的是 puppeteer 模式而非 puppeteer-core 模式,这个路径设置为空即可,换句话说,如果这个路径为空,则自动使用 puppeteer 模式。
  3. 通知路径脚本,是当签到产生异常时通知你的方式,这里使用 shell 脚本进行编写,你可以自己实现通知方式,如果没有保持为空即可。
  4. userAgent 这个参数可以根据需要更改你自己的浏览器头信息,如果你不清楚勿动即可。
  5. 脚本中的用户名和密码都是明文显示,如果你比较在意可以放到环境变量里,然后通过 process.env.xxxx 读取即可,具体请自行实现。
  6. 登录的 cookie 默认存储到脚本运行目录的 tmp 目录里,且明文保存,如果你担心安全问题,请自行实现加密和解密工作。

Mac 下的简单通知脚本如下:

notify 脚本

#/bin/bash
title="提示"
if [ "$2" != "" ] ;then
    title=$2
fi
/usr/bin/osascript -e "display notification \" $1 \" with title \"$title\" sound name \"Frog\""
/usr/bin/osascript -e "say \"您有新的通知 $title $1\"";

alert 脚本

#/bin/bash
button="知道了"
if [ "$2" != "" ] ;then
    button=$2
fi
/usr/bin/osascript -e "say \"您有确认信息 $1 请确认\"" &
/usr/bin/osascript -e "tell application \"System Events\" to display alert \"$1\" buttons {\"$button\"} default button 1"

其中,/usr/bin/osascript -e "say \"xxxx xxxx\"" 是语音通知,如果你不需要语音通知,注释或删除即可。

alert 和 notify 的区别是,alert 在发生严重错误,导致流程中断时会弹出,比如登录失败,这个弹窗不会消失,除非用户手动点击;而通知则是简单提醒,通常过一会会自动消失。

但,如果是你自己实现的通知脚本,那就看你如何定义了。

最后,放一个签到脚本的整体流程图吧。

puppeteer 链滴自动签到流程图.png

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22250 引用 • 88929 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1327 回帖 • 1 关注
  • Puppeteer
    7 引用 • 31 回帖
  • 签到
    39 引用 • 393 回帖 • 10 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    124 引用 • 169 回帖
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 2 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 227 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    6 引用 • 38 回帖
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    169 引用 • 506 回帖
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 65 回帖 • 441 关注
  • 音乐

    你听到信仰的声音了么?

    60 引用 • 511 回帖 • 1 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 128 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    77 引用 • 390 回帖
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    26 引用 • 84 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    566 引用 • 3532 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    15 引用 • 122 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 26 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 727 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 24 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    55 引用 • 85 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖 • 1 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 74 回帖 • 2 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 911 回帖 • 243 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    943 引用 • 943 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 6 关注