教你写个网页自动签到脚本

article/2025/11/1 6:17:28
Tips:要求有js基础,最起码要敲过代码,hello world不算。。

1.搜寻受害者

就选这个了,
在这里插入图片描述
在这里插入图片描述

2.准备阶段

首先打开浏览器的控制台,按F12,选中网络,选中保留日志,就一直开着控制台,不要关
在这里插入图片描述
如果是英文,选择Network,Preserve log,不要关闭控制台

3.抓取数据

3.1:进入到签到的最后一步

最后一步的意思就是如果你执行了最后一步操作,接下来就会提示你签到成功,那一步就叫做最后一步
比如这个网站,如果点击了这个按钮就会展示签到成功,那点击按钮这一步就叫做最后一步
在这里插入图片描述

3.2:清空控制台

点击红圈内的图标清空底下的信息,如果是空的跳过这一步
如果清空了之后时不时会蹦出来一个,这种情况就需要你仔细筛选了
在这里插入图片描述

3.3:开始签到

执行最后一步
在这里插入图片描述

3.4:筛选数据

在你按下按钮的一瞬间,下边会出现一条或多条请求(画细红线的,黑色的是马赛克),从你按下按钮开始出现的第一条开始找
在这里插入图片描述
我按下按钮出现的第一个请求是第三条,add的那一个
点击,看看具体内容(红色的是需要查看的,绿色的是内容)
目前看的是标头,英文的浏览器也是相同的位置
在这里插入图片描述
滑到最底下看到了我签到的贴吧的名字,
在这里插入图片描述
如果在这里没找到关键的信息,还可以看这边,预览或者响应,这个请求的返回参数就能看到贴吧名字,因为这是返回参数,有的甚至能直接看到成功之类的消息,或者utf-8编码的中文字符,类似于这种
\u670d\u52a1\u5668\u6253\u778c\u7761\u4e86\uff0c\u518d\u7b7e\u4e00\u6b21\u6572\u9192\u5b83
一般这种签到返回的数据都是json格式的,可以直接看懂
在这里插入图片描述

4.取得链接和参数还有请求类型

4.1:取得链接和参数

在上边已经确定了是哪一条请求,接下来查看它的请求地址
切换到标头选项卡,可以明显的看到URL(英文界面在相同位置)
链接 https://tieba.baidu.com/sign/add
在这里插入图片描述
滑到最底下,如果有类似于下面的图这种的数据也记下来
左边的是键,右边的是值
连接起来
ie=utf-8
kw=2ch
很明显,第三条数据是计算出来的值,但是我们找不到算法,就先不计了,一般情况下缺参数是有很大概率会失败的,但是运气好,成功了
在这里插入图片描述
把链接拼起来
https://tieba.baidu.com/sign/add
这种的链接没有问号(?),需要在最末尾加个问号(一定要英文问号,所有的标点都是英文字符)
https://tieba.baidu.com/sign/add?
然后添加刚才的键值对,用&分隔
https://tieba.baidu.com/sign/add?ie=utf-8&kw=2ch
好了,链接到这里就拼完了,
Tips:如果你遇到的链接是类似于这种的
https://tieba.baidu.com/sign/add?AAA=&BBB=bb
就是只有键没有值的,可以把键删掉,只有一个键值对不需要&分隔
https://tieba.baidu.com/sign/add?BBB=bb

4.2:获取请求类型

在图上能看到请求方法POST
还有一种是GET
在这里插入图片描述

5.尝试访问

5.0:翻译返回参数

如果返回的参数是带有类似于这种的字符*\u670d\u52a1\u5668\u6253\u778c*
就用下边这段代码,自己比着葫芦画瓢就行
会js应该不至于连控制台都不会用吧。。。

console.log(decodeURI('{"no":1101,"error":"\u4eb2\uff0c\u4f60\u4e4b\u524d\u5df2\u7ecf\u7b7e\u8fc7\u4e86","data":""}'));

浏览器控制台使用
在这里插入图片描述

5.1:GET看完这一步再看下一步

上边说了请求类型,如果是GET,可以尝试把链接直接输入到地址栏,然后回车查看返回值
在这里插入图片描述
返回参数:
在这里插入图片描述
翻译成人话就是:{“no”:1012,“error”:“服务器打瞌睡了,再签一次敲醒它”,“data”:""}
意思就是失败了
在这里插入图片描述
如果返回的参数是您已经签到过了一天只能签到一次之类的话,就说明成功了,这个要自己判断
因为上边的请求很明显是POST,在浏览器上输入很大概率是失败的(在浏览器上输入=发送GET请求),所以我们要用js来发送请求,并且自动签到也是要用js写

5.1:POST直接看这一步

代码

	var xml = new XMLHttpRequest();/** 这里要注意换成自己的内容*/xml.open("请求类型,GET或者POST", "请求地址,就是拼出来的URL");xml.withCredentials = true;xml.send();xml.onload = e => {console.log(e.currentTarget.response);}

复制这段代码,然后把内容换成自己的,然后在控制台打进去
在这里插入图片描述
看到返回值是这个,就算是成功了一大半了
接下来就是等待第二天的到来,如果可以签到多次,那就可以直接看下边的,

6.确认正常签到的返回参数

用贴吧做受害者的好处出现了,可以签到多次,毕竟有那么多吧
新的受害者(划掉)

在这里插入图片描述
你在测试的时候要在你要签到的网站下测试,否则跨源请求会被浏览器阻止
部分返回参数:

在这里插入图片描述
刷新一下页面
在这里插入图片描述
成功!

7.封装js并放入油猴

7.1:油猴

https://greasyfork.org/zh-CN
做到这一步的,没用过也应该听说过油猴这个东西
安装我就不说了,点击添加新脚本,

在这里插入图片描述
把里边的东西都删掉,使用下边的代码,在最后面,看完7.2再弄
在这里插入图片描述

7.2:封装js

下边代码第28行你自己修改请求地址和请求方式

代码里23行,34行
23 if (GM_getValue(‘CSDNsignInfo’) != new Date().getDay())
34 GM_setValue(‘CSDNsignInfo’, new Date().getDay());
这两句是防止每次打开这个网站都进行一次签到,每天只签到一次,前提是你运行脚本
这两句的意思可以去这个网站看一下
https://jixunmoe.github.io/gmDevBook/#/doc/tutorial/meta

第31行的作用是吧json字符串转换成对象,转换完成后就可以直接使用对象
目前脚本是直接把返回的内容显示出来,你可以把它修改修改
例如返回的json是这种的
{“no”:1101,“error”:"\u4eb2\uff0c\u4f60\u4e4b\u524d\u5df2\u7ecf\u7b7e\u8fc7\u4e86",“data”:""}
转换成对象就变成了下图,应该看得清吧。。
在这里插入图片描述
下边代码里的response就和a是一样的
只需要把
showTips(response, textPosition);
换成
showTips(response.error, textPosition);
就能只显示错误信息了,
然后其他的自己改吧改吧就完事了
代码

// ==UserScript==
// @name         脚本的名字
// @namespace    https://xxxx.com  如果你有个人网站就填在这里
// @version      0.1  版本号
// @description  脚本功能的解释
// @author       脚本作者名字
// @match        需要匹配的网址,就是你要签到的网址
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==/*** 修改提示的位置(textPosition)* 0右下角* 1左下角* 2左上角* 3右上角*/
var textPosition = 0;
//下边的不要动
if (GM_getValue('CSDNsignInfo') != new Date().getDay())signInfo();function signInfo() {var xml = new XMLHttpRequest();xml.open("GET", "https://xxxx.com");xml.withCredentials = true;xml.send();xml.onload = e => {var response = JSON.parse(e.currentTarget.response);showTips(response, textPosition);GM_setValue('CSDNsignInfo', new Date().getDay());console.log(response);}
}/*** showTips方法与anim是一个小小的提示框模组*//*** code from hsmyldk* position* 0右下角* 1左下角* 2左上角* 3右上角* @param {提示文本} text * @param {文本位置} position * @param {边框颜色} color*/
function showTips(text, position, color) {if (color == null) color = '#00c8f5';if (position == null) position = 0;var Msg = document.createElement('div');Msg.id = "hsmyldk_signInBox";Msg.height = '50px';Msg.width = '300px';Msg.innerHTML = text;var styleText = 'z-index: 1000;background-color: #fff;height: 40px;width: 200px;position: fixed;border-top: 2px solid ' + color + ';border-bottom: 2px solid ' + color + ';text-align: center;font-weight: bold;font-size: 16px;' + (text.length > 10 ? 'line-height: 20px;' : 'line-height: 40px;');switch (position) {case 1:{styleText += 'padding-right: 5px;left: -210px;bottom: 230px;border-radius:0 18px 18px 0;border-right: 2px solid ' + color + ';';break;}case 2:{styleText += 'padding-right: 5px;left: -210px;top: 230px;border-radius:0 18px 18px 0;border-right: 2px solid ' + color + ';';break;}case 3:{styleText += 'padding-left: 5px;right: -210px;top: 230px;border-radius: 18px 0 0 18px;border-left: 2px solid ' + color + ';';break;}default:{styleText += 'padding-left: 5px;right: -210px;bottom: 230px;border-radius: 18px 0 0 18px;border-left: 2px solid ' + color + ';';}}Msg.style = styleText;document.body.appendChild(Msg);anim(document.getElementById('hsmyldk_signInBox'), false);
}/*** code from hsmyldk* @param {动画元素} item */
function anim(item) {/*** LorR* true 左* false 右*/var LorR = false;var direction = true;var i = item.style.right;if (i == null || i == NaN || i.length == 0) {i = item.style.left;LorR = true;}if (i == null || i == NaN || i.length == 0) {console.log('你有问题');return;}try {if (LorR) {$(item).animate({ left: '0px' }, 500);setTimeout(() => {$(item).animate({ left: '-210px' }, 500);}, 5500);} else {$(item).animate({ right: '0px' }, 500);setTimeout(() => {$(item).animate({ right: '-210px' }, 500);}, 5500);}return;} catch (error) {console.log('不支持jQuery')console.log(e);}i = parseInt(i.substring(0, i.length - 2));var o = i;var width = item.style.width;width = parseInt(width.substring(0, width.length - 2)) + 20;/*** o* 如果>0就让它=0,i--* 如果=0就让它<0,i--* 如果<0就让它=0,i++*/if (i < 0) direction = false;var interval = setInterval(() => {if (LorR) {item.style.left = (direction ? --i : ++i) + 'px';} else {item.style.right = (direction ? --i : ++i) + 'px';}if (o == 0) {if (Math.abs(i) == width) {if (interval != null) clearInterval(interval);item.remove();}} else {if (i == 0) {if (interval != null) clearInterval(interval);setTimeout(() => {anim(item);}, 5000);}}}, 1);
}

http://chatgpt.dhexx.cn/article/1yN8aTHq.shtml

相关文章

WEB端脚本

//弹框 _self.showWarning("请先填写实付金额"); console.log("跳转的id:"billIds);//弹选择框 waf.msgBox.showConfirm({title: "信息提示",summaryMsg: "是否删除",buttonType: "yes-no",buttonCallBack: [function () {c…

在网页执行脚本

工具&#xff1a; 谷歌或EDGE浏览器安装 tampermonkey 插件 步骤&#xff1a; 打开需要指定脚本的网站点击tampermonkey 插件选中新增脚本开始编辑你的脚本 例如&#xff1a; 以 Java技术栈 为例&#xff0c;正常查看文章需要关注公众账号来解决查看全文&#xff0c;添加脚本后…

网页JS自动化脚本(一)安装油猴或暴力猴等脚本管理器并新建脚本

在我们的工作生活当中使用网页的机会越来越高,很多时候要进行重复的操作,所以进行一些JS脚本就成了可选项首先我们要在网页浏览器中安装上脚本管理器,这里示范的是安装暴力猴,是一个开源的免费的小软件,是在github上的一款软件,下载下来之后名称为Violentmonkey_2.13.0_chrome.…

【程序设计】Web网页脚本执行

文章目录 本文说明浏览器控制台交互IDE启动Node.js执行嵌入HTML执行引入JavaScript的方法页头直接引入页中直接引入页头和页中直接引入元素事件中直接引入外部脚本文件引入显示JavaScript数据的方法本文说明 学习和验证JavaScript等网页脚本时,如何运行和调试是一个重要的问题…

基本从零开始的网页脚本编写学习

终极目标是完成一个能过自动刷积分的工程&#xff0c;嘿嘿嘿&#xff08;痴汉脸&#xff09;。说不定以后能自己写脚本来抢月饼呢&#xff08;划去&#xff09;。 说是“几乎从零开始”是因为我还知道javascript的拼写呀&#xff01;&#xff08;不&#xff0c;是熟练掌握 完成…

HTML 脚本

html 页面与 JavaScript 脚本混合使用可以使原本的页面具有更强的动态和交互性。通过 <script> 标签来定义客户端脚本&#xff0c;比如 JavaScript。<script> 标签既可包含脚本语句&#xff0c;也可通过 src 属性指向外部脚本文件。JavaScript 最常用于图片操作、表…

网页自动点击脚本(可用于自动评教)

期末评教老师很多&#xff0c;为了避免浪费时间&#xff0c;可以用这个脚本来实现自动评教以及自动提交 原理简单清楚&#xff0c;可以自行理解替换&#xff0c;适合JS零基础小白 第一步 通过右击检查获得要点击的按钮的ClassName &#xff08;这边的ClassName可以是Name、Ta…

网页脚本

该实例操作网址&#xff1a; xxxxx 控制台实现的具体语句&#xff1a; document.querySelector("xxxx").click(); document.querySelector("xxxx").click(); 刚开始用的是别人的网站&#xff0c;为了避免麻烦还是自己写吧 打开过后就是这个样子了 &#…

网页脚本推荐

网页脚本推荐 废话不多说 上硬菜。 一、Tampermonkey&#xff08;油猴&#xff09; Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器&#xff0c;它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。 虽然有些受支持的浏览器拥有原生的用户脚本…

(三) Linux基本目录详解

系列文章目录 &#xff08;一&#xff09; Linux入门概述 &#xff08;二&#xff09; Linux环境搭建 &#xff08;三&#xff09;Linux基本目录详解 文章目录 系列文章目录前言1、Linux系统开机、关机2、Linux系统目录结构 前言 了解Linux文件系统的目录结构&#xff0c;是学…

Linux服务器上设置共享目录

共享目录设置&#xff08;LINUX&#xff09;&#xff1a; 服务器端&#xff1a; 1.查看是否安装NFS服务 命令&#xff1a;rpm -qa|grep nfs 若出现如图所示信息&#xff0c;说明已安装NFS。 2.创建共享目录&#xff0c;并赋予读写权限 # 创建共享目录 mkdir share/ # 给…

linux挂载windows共享目录

linux挂载windows共享目录&#xff0c;拷贝windows目录下文件&#xff0c;或者linux跟windows文件互通&#xff1b; 适合初学linux的同学。 命令范本&#xff1a; mount -t cifs -o username用户名,password密码 //192.168.0.0/linux /mnt/win 命令参数说明&#xff1a; -…

Linux文件、目录的权限

文章目录 Linux权限的概念Linux文件权限文件访问者分类文件类型和访问权限文件权限值的表示方法文件权限的设置 Linux目录权限粘滞位权限的总结 Linux权限的概念 Linux下有两种用户&#xff1a;超级用户(root)和普通用户(user) 超级用户&#xff1a;可以在Linux下做任何事普通…

Linux文件目录结构

目录 一、Linux简介 1.Linux简介 2.Linux与windows系统的区别 二、Linux文件目录 1.文件目录结构关系图 2.文件目录内容介绍 3.家目录 三、相对路径与绝对路径 1.绝对路径名 2.相对路径名 一、Linux简介 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统…

Linux 目录和文件的权限设置命令

chown 命令&#xff1a;修改文件或者目录的所有者 语法&#xff1a;chown 用户 文件或者目录 例子&#xff1a; 1, 将/var/www/user1的所有者改为user1 2, 将/var/www/user1的所有者改为root 同理命令chgrp:修改文件的所属组&#xff0c;语法同上。 #chgrp usergrp /var/w…

Linux目录扩容方法介绍

前言 在实际的开发运维工作中&#xff0c;经常遇到磁盘挂载目录空间不够的情况。这种情况下&#xff0c;原目录往往已经装满文件&#xff0c;整个目录备份都显得十分困难。 在上述背景下&#xff0c;解决目录磁盘空间不足&#xff0c;一共有三种方案。&#xff08;这里以/home目…

Linux目录权限修改-2

Linux系统中的每个目录都有访问许可权限&#xff0c;目录的权限和文件的权限类似&#xff0c;目录的访问权限也分为只读&#xff0c;只写和可进入三种。 只读权限表示允许浏览其内容。 只写权限表示允许在目录下新创建文件或目录。 可进入权限表示允许使用cd命令进入到该目录…

linux目录结构全解,Linux目录结构详解(最全最详细版)

对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识。 当在使用Linux的时候,如果您通过ls –l …

linux目录介绍和命令总结(后期续更)

为什么需要使用linux操作系统&#xff1f; 性能问题&#xff1a;windows服务器操作系统不如linux高稳定性问题&#xff1a; 底层架构&#xff1a;linux更加稳定&#xff0c;其开机时间可以达到好几年不关机开源&#xff1a;因为开源&#xff0c;人人都可以看到源代码&#xff0…

Linux(Linux各目录结构详解)

我们知道Linux系统是一个文件系统&#xff0c;它的文件系统就类似windows系统下的磁盘文件系统。 我们连接上一台linux系统的服务器。 输入命令 &#xff1a; ls / 我们可以看到 linux系统的根目录下有这些目录 bin boot data dev etc hbr home lib lib64 lostfoun…