从手动变为自动——KA.CI短链站的大更新

           

发布于 2022-05-16  757 人经过了这里


这段时间优化了下短链站,使其的短链跳转变得更快了
实测本地无缓存浏览器直接进去短链比如ka.ci/cat可以做到1秒钟左右跳转成功~

可是呢发现这个获取流程还是太复杂,于是想着写一套自动化程序来完成短链的申请审核以及校验发放
这是之前的获取流程,十分的繁琐(估计就是太长不看那种

于是经过一番思考,突然想到AFD提供了官方接口,那我们是不是可以试着去使用这个接口来完成校验呢?
说干就干,于是寻找了AFD的官方接口文档,发现AFD提供了两种形式:

爱发电提供了webhook和api两种方式为开发者提供便利。 webhook功能需要配置好url,每当有订单时,会请求配置的url;API功能需要开发者通过token生成sign签名,主动请求接口查询历史订单

我这里是使用了API主动调用的,当然如果你更喜欢webhook被动接收也是可以的
通过查询,我们可以很容易了解到如何进行API的调用——发送JSON请求

使用此函数便可以进行JSON请求以及接收返回值:

function http_post_json($url, $jsonStr){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json; charset=utf-8',
                'Content-Length: ' . strlen($jsonStr)
            )
        );
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        $ans = ((array($httpCode, $response))[1]);
        return json_decode($ans,true);//我将其转化为数组了,因为个人更喜欢数组一些(x
    }

当然在调用中还遇到了一些小问题,在这里只说一个大家也比较摸不着头脑的:
如果是json形式请求,官方给出的格式如下:

如果以 json 形式请求
'content-type: application/json'
{"user_id":"abc", "params": "{"a":333}", "ts": 1624339905, "sign":"59ada6ce4f74c4d3a97d788a73f6355d"}

实际上在我们测试的时候很容易发现这个json格式是有误的,经过十万次尝试终于试出了解法:
多执行一句$params = json_encode('{"page":1}');就可以了(也可能是我太傻了x)

于是,我们便可以结合这些,慢慢写一个自动提交,校验,发放短链的系统了:
具体代码没什么太大技术含量就不放在这里了,大家有兴趣可以自己研究研究~

另外对可能不知道KA.CI短链站的小伙伴说一句:在这里!ka.ci