缘由
逛一些博客时发现不少网站都有随机图片api,挺羡慕的,于是我自己也搞了一个。图片的话为了节省服务器空间我基本用的外链,也有我自己图床的图片,目前大部分图片在语雀,用的阿里的CDN,速度还是不错的。
实现
API的实现方法很简单:
- 从储存图片url的文本文件中随机读取一行
- 使用header跳转
- 检查referer和调用参数
- 显示相关图片
第一步的操作和 一言 里面一样,检查referer以及界面参考 @后宫学长 开源的 随机图片服务 。
API地址:https://api.spiritx.xyz/images/
分类默认跳转到acg,目前有acg、meizi、bing可选。emmm...其实还有的(输入萝莉有惊喜~~~
目前API里的图片较少,暑假再去添加更多图片吧
部分代码
代码实在是太简陋,没什么好展示的,不过我还是贴出来吧
/**
* 域名白名单校验函数
* @param $domain_list
* @return true/false
*/
function checkReferer($domain_list = array('spiritx.xyz','other domain')) {
$status = false;
$refer = $_SERVER['HTTP_REFERER'];
//前一URL
if ($refer) {
$referhost = parse_url($refer);
/**来源地址主域名**/
$host = strtolower($referhost['host']);
if ($host == $_SERVER['HTTP_HOST'] || in_array($host, $domain_list)) {
$status = true;
}
}
return $status;
}
/**
* 从文本文件中读取图片url并跳转
*/
function echo_img() {
if (checkReferer()) {
//调用参数
$type = $_GET['key'];
switch ($type) {
case 'xxx':
## 省略中间部分代码
}
} else {
//未授权域名
$img = 'https://view.spiritx.xyz/images/2019/03/13/404.th.png';
header("Location:$img");
exit();
}
}
## 省略中间部分代码
//前一URL
$refer = $_SERVER['HTTP_REFERER'];
//存在前一URL
if ($refer) {
echo_img();
} else {
//直接访问API地址
$type = $_GET['key'];
switch ($type) {
case 'xxx':
## 省略中间部分代码
}
exit();
}
预览效果
刷新会变哦~ ~
动漫图:
妹子图:
必应图:(外链调用是今日的bing cn图)
恭喜,你成功屏蔽了广告 *这是一则由 Google AdSense 自动推荐的广告,不代表本站立场
Comments | 5 条评论
我就是来看图的
@vultr

自己动手,丰衣足食。
@后宫学长
,学长说的对!