2023年2月

前几日接到求助,帮朋友完成20课时的网络学习。
我想都没想就接下了,寻思找个接口直接把学习时间提交上去,易如反掌。
最不济最不济,咱还能16x播放,也简单的很。

然鹅,当我登陆的时候,发现自己还是太天真。
首先,不能多开窗口。打开第二个播放窗口后,就会弹出:

其次,倍速播放不管用……无论多快的播放速度,获取学习时长的间隔还是一样的。
经过分析,这个学习,是通过每隔一段时间,通过post请求上报视频播放时间,而不是上报播放时长。

这已经是我见过防作弊做的最好的站了(除了人脸识别上课)。

于是有两个思路来“偷懒”:

1,直接post播放时长。

按照请求格式,把session_time字段写的长一写(甚至直接写成本节课的时长,我没测试。)然后提交,就可以获得学习时长。


但是,这个方法太暴力,不知是否会出发后台警报(之前测试一个学习平台,post请求发出去,返回了“账号作弊已记录,拉黑……”巴拉巴拉的)。

2,窗口多开。

稳妥一点的还是老老实实的挂课,多窗口学习。
搜索“停止计时”,发现多窗口检查居然是通过一个xhr请求的返回值1/2来判断。那我们可以拦截并修改这个请求,即可绕过检测。

这里我用的油猴脚本,也没啥技术含量,就几行简单的代码:

(function() {
    'use strict';
    const originOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function (method, url) {
    if (url.indexOf("checkcourse.do")>-1) {
        this.addEventListener("readystatechange", function () {
            if (this.readyState === 4) {
            const res = JSON.parse(this.responseText);
            Object.defineProperty(this, "responseText", {
            writable: true,
       });
       this.responseText = "1";
           console.log(this.responseText);
      }
    });
  }
  originOpen.apply(this, arguments);
};
})();

经常在电脑上用网页刷短视频,躺在椅子上,不想动。

所以弄个自动回复,点赞。 需要先点击显示评论框。

function handlerByPmouse(_data, _arg) {
    //调用Python外挂做动作
    $.ajax({
        url: "http://127.0.0.1:2000",
        type: "POST",
        async: true,
        data: _data,
        dataType: "json",
        success: function (__data) {
            console.log(__data);
            if (_arg) {
                handlerByPmouse(_arg);
            }
        }
    });
}
function autoHandler(_node) {
    var x = window.screenLeft;
    var y = window.screenTop;
    var _p = _node.offset();
    var _x = x + _p.left + _node.width() * .6;
    //110要根据浏览器不同做调整,测试环境为edge显示收藏夹栏  
    var _y = y + _p.top + 110 + _node.height() * .6;
    //igrd2是五笔输入法姿态下的 "耀武扬威" 。(模拟按键igrd2),如果是回复英文直接输入内容即可。
    handlerByPmouse({ type: "moveAndClick", x: Math.floor(_x), y: Math.floor(_y) }, { type: "write", text: "igrd2" });
    //回车触发回复
    setTimeout(handlerByPmouse, 1000, { type: "passKey", key: "enter" });
    //点击视频画面
    setTimeout(handlerByPmouse, 3000, { type: "moveAndClick", x: x + 500, y: y + 360 });
    //再次点击(和上一次形成双击,点赞)
    setTimeout(handlerByPmouse, 3200, { type: "click" });
    //setTimeout(handlerByPmouse, 4500, { type: "passKey", key: "down" });
    //setTimeout(handlerByPmouse, 5000, { type: "moveTo", x: 629, y: 169 });
}
function getInput() {
    //筛选出右下角的回复框
    var _node;
    $("span:visible").each((_index, _ele) => {
        if ($(_ele).text().indexOf("留下你的精彩评论吧") != -1) {
            if (!_node || _node.offset().top < $(_ele).offset().top && $(_ele).offset().top < $(window).height()) {
                _node = $(_ele);
                console.log(_index, $(_ele).offset().top);
            }
        }
    })
    if (_node) autoHandler(_node);
}
function videoPlaying() {
    //筛选出左下角的视频进度
    var _node;
    $(".time-current:visible").each((_index, _ele) => {
        if (!_node || _node.offset().top < $(_ele).offset().top && $(_ele).offset().top < $(window).height()) {
            _node = $(_ele);
        }
    })
    console.log(_node.text());
    //视频播放到第3秒时,触发自动回复和双击视频画面点赞
    if (_node.text() == "00:03") {
        getInput();
    }
    setTimeout(videoPlaying, 1000);
}
function getScript(_url) {
    var _script = "console.log('加载失败')";
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function (_xhr) {
        if (_xhr.target.readyState === 4) {
            if (_xhr.target.status === 200 || _xhr.target.status === 304) {
                _script = _xhr.target.responseText;
            } else {
                error('请求失败');
            }
        }
    }
    xhr.open('get', _url, false)
    xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded")
    xhr.send(JSON.stringify({}));
    return _script;
}
function init() {
    videoPlaying();
}
eval(getScript("https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"));
init();

里面用到了一个python写的外挂小软件

下载地址:
https://pan.baidu.com/s/1IiSvK8DuftEqeaXI9fZIyg?pwd=j1dm 提取码:j1dm

工具使用说明:

post方式向http://127.0.0.1:2000提交数据
浏览器的默认情况下,不允许https页面从http链接引用 javascript/css/plug-ins等资源。需要在 edge:\flags (edge浏览器为例)关闭Block insecure private network requests并重启浏览器。

{type:"ocrCode",img:图形base64} 识别文字字母等
{type:"detection",img:图形base64} 识别点选文字范围
{type:"slide",targetImg:滑块base64,backgroundImg:背景base64} 识别滑块
{type:"clickImage",key:"窗口关键字",img:按钮base64} 点击图形按钮
{type:"passKey",key:按键} 模拟键盘按键
{type:"activityWindow",window:"要激活的窗口标题关键字",key:按键【可选】} 激活窗口并按键
{type:"click"} 点击鼠标
{type:"clickPoint",x:X坐标,y:Y坐标} 指定坐标点击鼠标
{type:"move",x:X坐标,y:Y坐标} 移动鼠标
{type:"moveAndClick",x:X坐标,y:Y坐标} 移动鼠标到指定坐标再点击
{type:"write",text:"要输入的内容"} 模拟键盘输入文字

使用:
1 开启那个外挂EXE (在右下角有个黑猫图标)。
2 把上面的代码复制到油猴里面,然后就可以在edge里面刷短视频看效果了。

赵明走在街头,脚步轻快,他穿着一件白色的衬衫,夹在裤子里的手机像一颗明珠般闪耀着光芒。他正在赶往一个会议现场,参加一个重要的商业会议。他已经把一份重要的报告准备好了,一定要把它交给会议主席。

会议地点就在街角的一家酒店里,赵明走进大厅,看到里面已经满是人。他走过去,把报告交给会议主席,然后坐在一旁,准备听取会议的内容。

会议刚开始,突然有人大喊:“警察!”赵明看到大厅里的人都惊慌失措,大家都在往外跑,可是他却愣在原地,看着走廊里走来的警察,他觉得自己好像被警察给盯上了。

警察走到赵明的面前,拿出一本簿子,上面写着他的名字,然后对他说:“你被捕了!”赵明吓了一跳,他不知道自己犯了什么错,只是担心自己会陷入麻烦之中。

警察把赵明带到派出所,在派出所里,赵明发现自己被控制犯了一项罪名,就是他涉嫌抢劫一家银行。

赵明非常惊讶,他从来没有想过自己会犯这种罪,他只是在银行外面经过,怎么会被指控抢劫呢?

赵明被关进了牢房,他深思熟虑,想着自己究竟是怎么会被指控抢劫。他突然想起,前几天他在街上遇到一个叫熊熊的人,他们聊了一会儿,熊熊说他有一个好主意,可以让赵明一夜暴富,赵明当时就听信了熊熊的话,跟他一起去抢劫银行。

赵明终于明白了,原来他是被熊熊骗去抢劫的,他当时就被熊熊抓走了,而熊熊却逃之夭夭。

赵明被判有期徒刑一年,他在监狱里度过了漫长的日子,孤独寂寞,他深知自己的错误,他决心以后再也不会犯错误了。

一年后,赵明出狱了,他把自己的错误深深记在心里,开始重新做人,他又重新投入到工作中,努力工作,取得了不错的成绩,最终成为一名成功的商人。

从此以后,赵明再也没有犯过错误,他把自己的错误当作一个教训,从此以后他再也不会轻易相信别人的话了。

ios14 - 15.4.1(2022年)

因为漏洞的原因iOS14-15.4.1系统,还有15.5bate版本,15.6bate版本,
这些版本都可以无限制的安装IPA程序,使用轻松签+就可以方便的实现!

ios15 - 16.2.1(2023年)

目前这个阶段的版本系统可以通过比较抽象的办法来实现无限制的IPA安装,其中需要注意的是不支持iOS15.7.2及以后系统。

1.突破ID签名安装IPA3个限制

apple id签名ipa可以免越狱安装ipa文件,有效期7天,通过WDBRemoveThreeAppLimit这个软件即可实现突破限制!
大佬的开源地址:https://github.com/zhuowei/WDBRemoveThreeAppLimit
蓝奏云地址:https://wwue.lanzoub.com/icDi50n8hw1c
用法:当你利用ID签名安装,当提示超过3个以上时,直接打开WDBRemoveThreeAppLimit,点击GO即可,突破限制了(还不行重启手机再点击GO)

2.解决证书过期Blacklist

这个软件可以实现的效果非常简单,就是你的APP签名过期了,用这个软件可以一次全部激活所有APP,让他们继续工作,而不是变灰闪退!
蓝奏云地址:https://wwue.lanzoub.com/i4c6D0n8hw3e
支持 iOS15-16.1.2 系统(不包括iOS15.7.2及以后系统)用法:当ID签名7天失效后,自签安装 Blacklist ,点击 Fix Blacklist ,页面会显示Done即可,失效的APP即可正常打开。

3.这也就意味着,你使用这套方案

① ID 签:使用的是Apple ID签名方式签名的APP,默认只能签名3个APP,7天后会失效,需要重新签名!
② 突破 3个限制:利用WDBRemoveThreeAppLimit 可以突破ID签只能签名3个APP限制,每个Apple ID可签名10个APP,不够就用新ID继续签名。(所以首先就要签名这个啦)
③ 破解 7天限制:利用 Blacklist 可以破解过期证书,使证书过期的APP也可以正常打开使用。(也就是需要7天后证书失效后,你再用ID签名Blacklist)

以上两个软件需要先自签后导入到手机!

自签IPA推荐软件
SideLoadly 爱思助手 牛蛙助手(第一次电脑,后续手机就可自签)

一个有点像chatGPT的AI程序,但这个程序说自己不是chatGPT
使用方法是:访问craft笔记网站,任意新建一篇文档,然后输入/,就会跳出一个assistant的选项,点开后就能开始对话了

他非常流畅,不像chatGPT那样,服务器繁忙时候就一卡一卡的甚至无法使用

他跟chatgpt一样,可以让他编写程序,
向他提出各种问题,支持多种语言,

你也可以把写到一半的内容放到文档里,然后调出ai,发送“继续写”,他还会帮你自动续写写到一半的文章

不过效果肯定跟openai官网的chatgpt要差点的

craft笔记的网址是:craft.do

网上American Express德国区的教程基本上都是针对当地用户的,我来写个云用户的分享吧。

AMEX DE卡种介绍

AMEX德国区信用卡主要有白金/金/绿卡,分别有55/12/5欧的月费,通过邀请链接申请会有3w(6个月消费6k欧)/2w(6个月消费3k欧)/1w的初始积分,直接办理会有100(6个月消费6k欧)/72(6个月消费3k欧)/0欧的返现。(活动可能会改,以实际为准)

此外还有Payback卡和蓝卡,前者通过邀请链接申请会有4000初始积分,直接办理可以获得1000初始积分,后者直接办理可以获得45欧(6个月消费600欧)返现,但后者开积分计划需要30欧/年,其他卡都能免费开启。积分计划是消费1欧积1分,250积分可以直接抵1欧,积分也能换别的东西比如机票。

可以随主卡申请附加卡,但副卡同样要验证身份的。

详细说明见:https://www.americanexpress.com/de/kreditkarte/alle-kreditkarten/

申请准备

申请AMEX DE的硬性要求有这几个:

德国信用记录Schufa,一般通过在德国银行开户可以获得,用个半年就能用来申请信用卡了。
德国地址,卡到了之后得看信息才能激活和使用。
欧元区的还款账户,一般用上述的德国账户就行。
护照,身份验证的时候会使用一个叫POSTIDENT的APP,需要护照来视频验证。
德国手机号,POSTIDENT视频验证的时候需要收一个验证码,不过和客服说说好像可以用别的国家的号码。
要是只满足前两点,可以试试类似的Gebuhrenfrei Gold信用卡,网页很简陋,会直接把卡片寄给你,签个名寄回去就能激活,还款是主动给它账户IBAN打钱。

关于地址:实测下来,欧洲银行无论是N26还是AMEX,都不查你地址是不是住宅地址的,所以只要填个转运仓地址就行。如果不想花钱把卡运回国,那就让转运商给你的物品拍个照,然后销毁就行。

关于信用记录

云玩家基本上都是办N26账户养的信用记录。先简单说一下德国N26银行的体验:挺好用的。没有年费/货转/闲置费,IBAN和SEPA转账也很方便,虚拟卡直接用,免费用。商户第一次消费前需要在手机APP上点确认。前段时间有随机封号现象,没锤到我。

开户的时候只需要护照就行,税号填身份证号就行。一般选欧洲的德国区,需要英语视频验证。开户时需要充20欧进去。有个人和商户两种类型可以选,还有消费返现计划,充会员可以提高返现比例(会员还有试用)。

相关细节可以看这两篇文章,就不重复了:
https://www.blueskyxn.com/202107/4879.html

https://www.eluyee.com/n26/

正式申请

回到AMEX卡,点第一节中的链接进去就能申请了。因为是德国区,所以所有网页和APP都是德语的,靠机器翻译差不多能看懂。申请界面看不懂的可以参考这篇文章。

有几点注意的:

申请的时候填的手机号不会验证,POSTIDENT视频验证收验证码的时候,就说收不到,让客服改手机号。
有个四位数的PIN码,消费和取款的时候要用。
填到一半退出的话,会发邮件请你继续填,输生日和邮编就能继续了。

身份验证

申请完很快就会给你发邮件,让你下个POSTIDENT APP来验证身份。这应用的语言设置不太好使,建议把手机语言调成英文再进去。

点击邮件里的链接,或进去之后填写邮件里的编号,就进到了填身份信息的界面。把护照等信息填完,会有客服和你视频验证。视频验证最后一步是收一个手机验证码,如果没有德国手机号的可以让客服改成其他手机号。

视频验证完,很快就会发邮件告诉你申请通过,过两天卡片就已寄出。

使用

登录amex.de就可以访问网页版门户,手机版下载链接网页上也有,安卓在Play商店好像锁区,要去别的地方找安装包。

注册好在线账号之后,输入卡号、CVV码、消费密码就能绑定成功,在网页和手机上查看卡账户信息了。

特别要注意的是:AMEX运通卡的卡号是15位的,CVV码有4位,印在卡片正面。卡片背面的3位数是标识码,电话银行可能会用到。

信用卡的额度是不固定的,大额消费前可以在网站/APP里点Verfügungsrahmen prüfen检查信用额度。我用了一年多额度就到8k欧了。

线上消费的时候,会有2FA验证,支持手机验证码和邮箱验证码,验证过之后可以把商户加白名单免验证。

货币转换费2%,ATM取款4%起步,还是有点贵的。线上尽量用欧元买单。

我这里是账单日是29号,还款日是12号(实测还晚几天),会从你绑定的账户扣钱。(一定要记得准备好钱,有一次账户钱不够被N26收了3欧手续费)

电话银行可以用Google Voice打,打过去一通叽里呱啦,不过不要紧,依次按两个0就能转到人工了,属于是“全球通用”了。

转卡

如果用着觉得月费太贵了,或者把初始福利拿到手之后,可以选择换别的等级卡,比如白金卡换绿卡之类的。

要换卡,就在申请界面重新申请一张就行,填信息的时候有个地方问你是否已有AMEX DE卡,把现有卡号填上去就行了。

换卡的话,不需要再视频验证身份了,过两天直接寄卡。如果要取消旧的卡,需要打电话过去取消,申请完一个月会销卡。

另外就是Global Transfer,可以凭一个国家的AMEX记录申请另一个国家的卡。点进去选择国家,申请就行,期间会让你授权之前的卡信息。