标签API下的文章

Jerry Bendy 发布于 11月20, 2016

记录 BYI API 站点的一次重写

BYI_API 上线已经两年多了,总计调用量已经超过千万次。虽然名叫 API,但其实和 API 没太大关系,只是一些免费开放使用的辅助接口罢了。两年间共相继开放了 favicon 图标获取、网站首屏截图、短网址、IP 地理位置查询等服务,后来因为维护及服务器原因(个人维护,单台架构,无法承载过多请求,加上被人滥用等)又相继停止了大部分服务,目前仅留了 favicon 获取服务可以正常使用。 网站首屏截图的服务目前没发现国内可用的服务,于是自己写了一套,但这个服务需要抓取目标网站的首页,并在服务器端渲染首页图片,然后再缩小到需要的尺寸,对服务器的开销特别大,于是不得不在开放六个月后关停此项服务。让我决心关停此项服务的最大原因倒不是服务器,而是服务被人滥用。本意是免费开放一项服务可以供一些站长在自己网站中使用,可以...

阅读全文 »

Jerry Bendy 发布于 10月19, 2014

【BYI_API】新版网站Favicon接口上线,快速获取网站Favicon图标

Favicon API

每个网站都应该有一个favicon图片,就是显示在浏览器标题栏上面的小图标,当打开网页或将网页加入收藏时都会显示这个图标。而对于WEB设计或站长来说,可能会希望把某个网站的图标加入到站点名字或链接的前面以为页面增添色彩,同时增加链接的可读性和易用性。

这个接口便是为此功能而生的。通过一种简单、稳定的方式获取网站的Favicon图标。

继今年年初发表的《{% post_link "icewing-blog-support-favicon-server" "冰翼博客开始提供Favicon获取服务" %}》之后陆续收到一些朋友的邮件,对接口的不足和改进提出了一些有用的建议。

新版的Favicon API主要针对上一版本的兼容性不好、获取速度慢等问题进行改进,由原来的单一文件发展为基于CodeIgniter框架的完整应用程序,摒弃文件缓存改用Memcache作为缓存介质,用Opcache加速程序运行,并针对国外被墙网站做了特殊的缓存处理以避免无法访问。(详见Favicon更新历史

新版Favicon接口的调用方式:

<img width="16" height="16" src="http://api.byi.pw/favicon/?url=网址" />

url参数支持HTTP/HTTPS协议,可以是一个HOST地址,也可以是完整的URL字符串。因为好多网站的Favicon图标仍然采用16px*16px的ico图片,并未提供高清的格式,所以在img标签上限制图片尺寸为16x16可以获取最大限度的兼容性(否则可能会造成不同网站的图标大的大小的大~),也要吧使用接口的size参数控制输出的图片大小(截止至发表此博文时该功能还未正式上线)。

具体的参数和使用方法请移步:http://api.byi.pw/favicon

如果在使用过程中有任何问题、意见或建议,欢迎在下面留言或直接邮件/QQ联系我,同时欢迎提供被墙网站或打开速度较慢的网站地址,我会针对这些网站重新建下缓存,以提高响应速度,谢谢!

PS:因为当前接口程序文件和其它接口有交集,并且针对CI框架做出的修改比较多,目前暂时无法开源,后续待当前版本修改稳定后重新整理出来一个版本开源在Github或Coding上,到时会另写一篇文章发布地址。

阅读全文 »

Jerry Bendy 发布于 02月21, 2014

冰翼短网址程序改版上线,开放API

2016-05-22更新:phurl的算法由于会产生被遍历的安全问题目前已停止使用,新的方案和接口正在开发中。

我曾在2013年5月18日发分享过一个网站软件叫PhUrl(参见《免费短网址程序:phurl》),PhUrl的源码是逐过程的,功能简单、难以扩展并且难以移植。刚好我最近在学习PHP面向对象,本着代码重用并且易于扩展的原则,对PhUrl的全部源代码进行了改造(准确的说两者之间已经没什么相似性了,除了前台界面暂时还未修改)。

这次修改主要是向着面向对象和面向切面两个方向,在过程式执行的同时引入Hook机制,在数据校验、Query执行、数据插入等过程创建Hook并提供扩展支持。修改后的程序使用我常用的CI(CodeIgnter )框架,目前程序功能已完善,各接口均可使用,只是后台还在建设,安装程序还没做,所以在完善之前暂不开放源代码下载。

服务地址:http://u.byi.pw

使用方法很简单,输入要缩短的长网址并点击“缩短”即可,别名是可选的自定义后缀,如别名是“blog”,就可以使用http://u.byi.pw/blog的形式访问。

程序支持以AJAX或CURL方式获取和还原短网址,也可以从其它站点POST数据到下面给出的网址。

API列表

生成短网址

请求地址: http://u.byi.pw/api/create

请求方式: POST

参数:
      url = 长网址
      alias = 别名  (可选)

返回数据: JSON

向上面的地址发送POST请求,发送数据包含必选参数url=长网址,别名为可选参数。

执行成功服务器返回一个JSON字符串,其中包含以下数据:

time     请求发生的时间

status   返回状态码,大于0时表示发生一个错误,可从err_msg查看,0表示成功,-1表示网址已经存在于数据库中(此时tinyurl可用)

err_msg   错误描述,status为0时返回空字符串

tinyurl   生成的短网址

还原短网址

请求地址: http://u.byi.pw/api/query

请求方式: POSTGET

参数:
      tinyurl = 短网址(可以是整个的短网址或仅代码)

返回数据: JSON

向上面的地址发送POST或GET请求,发送数据包含必选参数tinyurl=短网址。

执行成功服务器返回一个JSON字符串,其中包含以下数据:

time     请求发生的时间

status   返回状态码,大于0时表示发生一个错误,可从err_msg查看,0表示成功

err_msg   错误描述,status为0时返回空字符串

longurl   原网址

代码示例

//初始化CURL环境
$ch=curl_init();

//设置CURL参数
curl_setopt($ch,CURLOPT_URL,"http://u.byi.pw/api/create");
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

//发送数据参数
$data=array('url'=>'blog.icewingcc.com', 'alias'=>'blog');

curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$strRes=curl_exec($ch);
curl_close($ch);

//解析服务器返回的JSON字符串
$arrResponse=json_decode($strRes,true);

if($arrResponse['status'] > 0)
{
    echo iconv('UTF-8','GBK',$arrResponse['err_msg'])."\n";
} else {
    //生成的短网址
    echo$arrResponse['tinyurl']."\n";
}

阅读全文 »