解决网站被特定IP消耗流量的办法

博客空间从3月起不到10天的时间就被耗完所有传输流量。

起初试过百度云加速的安全防护功能,结果无效。后来把安全级别调到最高也没用。

之后看了网站的日志记录,发现有子域名网域关联被攻击的可能,于是把自己不用的网站关了。从日志看到少了些子域名的访问,但那几个访问大的IP依然阻止不了。

后来以为是百度云加速的网站检测影响,结果没多大变化,包括360的网站安全检测也不是耗流量的原因。

直到这个月,关5天发现Wordpress的登陆页面多其它网页多很多,百度上也有提到过这几个IP有破解网站密码的可能。于是配置Apache的文件,没什么用,估计虚拟空间某些功能用不了。然后下了个WP-Ban的插件解决了问题,终于可能将那几个讨厌的IP拒之门外了。

下面是拦截记录:WP-BAN

从索引量来看,并没有因为网站耗完流量访问不了,而减少索引,这可能是用百度云加速的一个好处吧。

整理博客

最近续完费,花了一些时间打理博客,不仅从技术层面,还包括内容层面。

技术层面,改网站的前端CDN,地址是日本的,然后用百度的云加速服务。不一定是多此一举,毕竟香港的前端CDN有太多人用了,而且之前也有访问不到的情况。

然后,处理七牛cdn镜像加速功能造成的网站被镜像问题,并清空七牛空间的静态文件,让文件重新缓存。

设置博客的多媒体,让它在上传图片时不要自动切割成多个尺寸的图片,并且在FTP空间中删掉了其它尺寸的图片,只留原图。

让作者的头像和页头的头像指向本地的图片,而不引用Gavatar的地址。

内容层面,准备给网站备案,去掉一些可能有些敏感的文章。

排版以前一些的文章。从本地或其它博客复制过来,会出现一些问题。

将文章的图片都改为引用原图,这就不会出现缩略图空缺而不显示的情况。

继续折腾wordpress

最近安装了柳城的自助友情链接插件将调用代码加在了页脚和友情链接的页面里。调用代码后发现数据库错误,原来插件只支持默认数据表表头wp_,所以如果安装时表头改的话要修改seo_friend_link.php里的wp_termst和wp_term_taxonomy,将前缀改成自己的表头。

关于链接自己也加入了360友链平台,将它的代码也加到页脚和友情链接的页面里。

将一般的百度统计代码改成异步统计代码。

将Gravatar头像缓存到本地的代码改成露兜博客修改的代码,去掉用七牛缓存的形式。

  • function my_avatar( $email, $size = ’50’, $default = ”, $alt = ”) {
  • $f = md5( strtolower( $email ) );
  • // 以下代码将头像缓存到wp-content目录下
  • $a = WP_CONTENT_URL . ‘/avatar/’. $f . $size . ‘.png’;
  • $e = WP_CONTENT_DIR . ‘/avatar/’ . $f . $size . ‘.png’;
  • $d = WP_CONTENT_DIR . ‘/avatar/’ . $f . ‘-d.png’;
  • // 如果要将头像缓存到当前主题目录下,请将3-5行代码改成:
  • // $a = get_bloginfo(‘template_url’) . ‘/avatar/’. $f . $size . ‘.png’;
  • // $e = get_template_directory() . ‘/avatar/’ . $f . $size . ‘.png’;
  • // $d = get_template_directory() . ‘/avatar/’ . $f . ‘-d.png’;
  • if($default==”)
  • $default = ‘http://articuly.com/avatar/avatar.jpg’;
  • $t = 2592000; // 缓存有效期30天, 这里单位:秒
  • if ( !is_file($e) || (time() – filemtime($e)) > $t ) {
  • if ( !is_file($d) || (time() – filemtime($d)) > $t ) {
  • // 验证是否有头像
  • $uri = ‘http://www.gravatar.com/avatar/’ . $f . ‘?d=404’;
  • $headers = @get_headers($uri);
  • if (!preg_match(“|200|”, $headers[0])) {
  • // 没有头像,则新建一个空白文件作为标记
  • $handle = fopen($d, ‘w’);
  • fclose($handle);
  • $a = $default;
  • }
  • else {
  • // 有头像且不存在则更新
  • $r = get_option(‘avatar_rating’);
  • $g = ‘http://www.gravatar.com/avatar/’. $f. ‘?s=’. $size. ‘&r=’ . $r;
  • copy($g, $e);
  • }
  • }
  • else {
  • $a = $default;
  • }
  • }
  • $avatar = “<img alt='{$alt}’ src='{$a}’ class=’avatar avatar-{$size} photo’ height='{$size}’ width='{$size}’ />”;
  • return apply_filters(‘my_avatar’, $avatar, $email, $size, $default, $alt);
  • }

主题Functions.php里面加入调用PHP文件的代码,以后将代码加入到主题apps文件夹里的PHP文件就可以自动调用。

  • define(‘theme_apps’, TEMPLATEPATH.’/apps’);//在此定义存放php文件的文件夹名称
  • IncludeAll( theme_apps );
  • /**
  • * include all PHP script
  • */
  • function IncludeAll($dir){
  • $dir = realpath($dir);
  • if($dir){
  • $files = scandir($dir);
  • sort($files);
  • foreach($files as $file){
  • if($file == ‘.’ || $file == ‘..’){
  • continue;
  • }elseif(preg_match(‘/.php$/i’, $file)){
  • include_once $dir.’/’.$file;
  • }
  • }//end foreach
  • }//end if
  • }

在RSS输出中加入查看全文的链接。 在主题header中调用 flush() 函数,加速WordPress博客,在</head>后面添加以下代码即可:

  • <?php flush(); ?>

这行代码只是强制服务器在发送其他内容之前,先发送你的网站头(header)。通过使用 flush() 函数,浏览器就可以在等待网页其他内容的时候,下载网页头中引用的所有样式表。 保护WordPress的主题的方法之一可以隐藏登录错误。这样做的原因是,不管什么时候,你输入正确的用户名,但是输入的是错误的密码,那么系统就会提示:”错误:密码不正确。忘记密码?”,这样就是直接暗示恶意用户,这个用户名是正确的,只要不断地尝试其他密码,迟早可以破解处你的登陆密码。同样,当你输入一个不存在的用户名是,会出现提示”错误:不可用的用户名”,同样也可以暗示这个用户名是不可用,再换其他用户名,这样又减少了一种可能。 为了不让这样的问题发生,你需要在 functions.php 文件中添加:

  • add_filter(‘login_errors’, create_function(‘$a’, “return null;”));

这个过滤器可以去除登陆错误时出现标准错误信息。 为防止其他文件的页面异常导致本地路径泄漏的漏洞,在/wp-includes/user.php等加入这这段PHP代码:

  • <?php error_reporting(0); ?>

做这些记录也是防止自己会忘掉。

2014年Godaddy退款经验

最近换了主题,原来不想动空间的,只是用了安定宝加速一段间之后,它从日本的加速节点换成了美国的加速节点,速度就慢了,本来就是Godaddy的美国主机,再用美国的加速节点就没有多少意义。于是就想起之前Godaddy的退款经验,那是非常好说话的事情,不像在淘宝购物退款那样困难。

总的来说,Godaddy的退款政策基本上算是非常让人接受,按年购买的45天内的按原价退,45天之后的按比例退回到Instore Credit之中,只要在服务期内都能退。退款政策我就不翻译了,非常好懂。只是没有完美的事会发生,想用了多久都可以按原价退回到原来付款方式上是不可能的,否则会有更多代购主机的骗子,他帮你买可以在任何时间退回到自己钱包里。

2013年夏天买了它们的Linux经济型主机两年,用了50.23美元,2015年7月22日到期的,用到2014年6月24日差不多到一年,最后退了27.22元,够大方了。

退款的方法很简单:

备份好你的主机,数据库或DNS记录。

然后在对应的产品点取消Cancel。

hosting

接着就是要联系他们的客服,在Support页面点Live Chat,跟他说明情况。这点跟2013年的退款方式很不一样,因为以前在Support是可以提交工单Ticket给他们,然后等他们回复。现在要在美国山区时间早上9点到凌晨,也就是北京时间晚上11点到白天下午2点。所以就有这点不便。我早上9点在系统排队,大概等了30分钟。其实这算快了,之前跟速卖通的线上客服,在它的系统排了3个小时,从早上9点排到差不多12点才把问题处理好。
refund
说明情况后,他们当场就核实,不到10分钟,他们就把钱退到Instore Credit之中。然后我就拿这毕钱续费域名了。毕竟它们域名的价钱和功能都不错。

refund1

总的来说,在网上购买国外的东西退款还简单。只要说明事况就可以了,不用什么手续之类。

去年还写了一封长达几百字的信去处理自己来来回回的几个退款,因为除了自己的主机还帮一个工厂老板购买主机,为了测试最好速度的主机买了又退几回,中间出现差额,我发完这封信沟通之后,他们退还了部分的差额,当时还不爽他们没全退。现在没想到他们也想大方了。

这里的经验就给各位参参考考。

refund2

利用静态地址解决微信机器人Token验证问题(2019年更新)

之前就安装过微信机器人插件,可是按照水煮鱼的方法没的通过微信公众平台的开发者认证。不是提示URL超时就是Token错误。以是用了CDN没有获取正取的服务器地址的问题,停用CDN之后,还是一样,没通过。在网上看到很多说是服务器的问题,在海外的服务器都会提示超时不能通过验证。而自己的主机空间在美国,加速的节点在日本,都在海外,换用了其它插件还是不行,于是就放弃没有理会,并停用了插件很长一段时间。

插件还留着,而最近也在清理插件,正在决定这个插件去留之际,因为想到还是想做个人品牌,微信公众平台也是这样宣传:“再小的个体,也有自己的品牌。”又继续在网上寻求解决办法。最后发现在百度知道有一个没有采用的答案引起了我的注意。他说可以上传微信公众平台开发者当中的PHP示例代码来通过验证。

大家可以在mp.weixin.qq.com/wiki/里找到这个文件,在填写Token和地址的地方就可以找到这个链接。

下载完Wx_sample.php后,我立即FTP上传到Wordpress的根目录下,同时也看到这个示例文件里面Token的验证为weixin,于是服务配置我就写成:

URL:http://articuly.com/wx_sample.php

Token:weixin

结果惊喜的一幕发生,结果是通过了服务器的验证,不是因为服务在海外就通过不了验证的问题。然后我就启用微信机器人并设置成weixin为Token。但是我给自己的公众平台发送信息之后没有任何反应。

有点灰心。接着想了一想,在微信机器人的插件目录当中查看到了weixin-robot-api.php,和微信提供的示例文件一样,同样有个字段去定义Token。

既然微信公众平台可以用示例文件通过验证,那么为什么不可以用这个有Toke定义的php文件去通过验证呢。然后我是将插件里的这个php文件的静态路径填写到服务器配置里:

URL:http://articuly.com/wp-content/plugings/weixin-robot-api.php

Token:weixin

这里的articuly.com要换成自己的域名。如果你修改过wp-content的名字,也要按照这个php文件的URL地址去填写,而不是用插件原用的?weixin的方式。
wx-robot
然后同样让人欢喜的一幕也发生了,公众平台也是通过了验证,成为开发者,我立即给自己的公众平台发送一信息。让人激动的是它真的有回复了。

各位看官可以看一下。

wx-robots
最后总结一下,其实php,html的语言没那么困难,就像我们所有理科的都要学VB,有些东西还是通过的,毕竟看到Define就是定义一些东西的意思。

希望对正在用这个插件的人有所帮助,能够通过微信公众平台的验证。

PS:打算折腾Wordpress着不多之后,购买一个高级版来玩玩。

PSS:2019年后Wordpress升级到了5.0版,微信高级机器人也升级到了5.0版。

2019年解决的步骤:

1.打开wordpress\wp-content\plugins\weixin-robot-advanced\token.php文件;

2.将“$use_plugin = 1;” 改为 “$use_plugin = 0;”;

3.“define ( “TOKEN”, “weixin” );”设为自己的token(默认是weixin);

4.验证url改为“http://域名/wp-content/plugins/weixin-robot-advanced/token.php”。提交验证,验证成功!(我的网站用了SSL,所以开头要用https)

5.之后再把“$use_plugin = 1;”改回来。

6.消息加密方式一定要选择:安全模式,插件也要设置成安全模式,填上消息加解密密钥。

7.点击 微信管理 > 扩展管理 > 数据清理,点击检查数据表按钮,对相关数据表进行升级操作。一定要操作

Wordpress修改记录

这里记录一下自己对博客主题的修改,对这段时间的折腾做个总结,即使时间久了希望自己也能找到修改过的地方。

主题文件中所有原作者的联系方式都改为自己的联系方式。并修改相关图片和LOGO。减少图片的尺寸。

footer.php增加了版权声明、广告合作、占星咨询、博客大全,删除了留言板,并调整了它们的顺序。调用了360自助友链的JS代码。删除了暂时无效的Ajax效果。

404.php去掉原来的框架信息,改为腾讯404公益的代码,居中倒计时信息。

header.php在头部加入了html5的预读取功能。

functions.php中增加字数统计,并将统计的显示在content-single.php中。增强了Wordpress默认编辑器的功能。暂停Gavatar头像缓存到本地的功能,改头像缓存为七牛镜像。禁用WordPress的auto-embeds。强制jquery在底部载入。禁用后台某些项目加载加速后台打开速度。为了安全,后台登录错误时发邮件给站长。

comments-ajax.php中增加对七牛镜像的兼容。

sidebar.php中增加博客运行时间的统计。并手动插入了当当和亚马逊的搜索框。广告位都使用公益广告。

aboutme.php修改自用的信息。

ajaxlist.php改为自用的标签。

wp-config.php中针对CDN增加还原真实IP的代码,并在最后添加前后台不加载多语言包的代码。屏蔽WordPress日志修订功能。

script-loader.php里面的字体源,由Google改为360的。

修改blog.css、comment.css、common.css的颜色,将绿色的地方,改为青绿色#00FFFF。

安装WP No Category Base和多说插件。

修改多说插件,用七牛CDN缓存embed.js为embed126.js。在首页不加载多说插件。

修改Wordpress Related Posts插件的显示方式和CSS样式。后来改用觅插件,去掉它的隐藏外链和版权页面。

利用iframe代码建立实用工具页面。

在右边栏增加自己原创的推荐文章。

根据博客内容完善了博客导航和页眉导航。

在文章头尾添加当当的广告代码。

清理多余插件和数据库记录。并执行SQL命令彻底关闭Trackbacks。

网站使用安全宝CDN,静态文件使用七牛缓存。最后服务搬到香港了,不用安全宝CDN了。

用静态地址的方式,成功启用微信机器人。

重写编写作者简介。添加新关键词。定义目前人生专注的领域。

算是折腾得差不多了,是时间断续写作了。

清理Wordpress插件

昨晚清理了不在东西。既然换了主题,当然内部陈旧的数据当然要清理一下,不然拖慢了整个博客那就不好了,毕竟既影响了我的用户体验也影响了其它人的用户体验。于是我清理掉不常用的插件。

排名不分先后,对某些主题来说一些插件是必须的,所以到时各位要问一下主题的提供者。

Akismet,这是过滤垃圾留言插件,必备,尤其是用来过滤外文的垃圾留言。毕竟世界上超过一半的网站都是英文写的,针对这些外文网站的垃圾群发软件也不少,自然我们这些中文博客也会中枪。

Baidu Sitemap Generator,这是生成Sitemap的插件,对本博客的主题来说是必备的,不然网站下面站点地图的链接不会更新。有利用于提高中小网站的收录量。对于较大的网站来说,可以用代码的方式去实现这部分的SEO。

Link Manager,友情链接的管理器插件,Wordpress 3.5版本之后把这个核心的功能降级,变成主题下面的链接。通过个插件可能实现一些功能,例如:本站友情链接中的互推联盟。对于本站主题来说是必要的,因为在首页几地方都有链接到Links。

WP-PostViews,文章阅数量的计算的插件,可以反映一篇文章的热门程度。本身主题之外,还有很多主题也用到这个插件,毕竟读者有时候也需要这个信息。

WP Keyword Link,根据文章内容关键词增加博客内部链接的插件。丰富博客的内链,有利SEO。

WP No Category Base,减少分数目录下链接的长度,除去链接中的Category,简单的链接更有利SEO。

多说,社会化评论框,或者其它第三方评论插件,增加评论功能,在现在有众多社交媒体的环境下,有利于作者和读者的互动。

BackWPup,建议每个独立博客的站长都要养成每天备份的习惯,这个插件就是帮助我们定期备份博客数据,不然数据丢了,自己几年的心血也没了,会很可惜。这个插件可以每天、每周、每几天,甚至每几小时帮助你备份博客的数据库、设置和文件,并且可以选择备份到服务器本地,自己的邮件上。

失效链接检查器,用来检查文章内容中链接的有效性,对于失效链接自己做相应的标记。对于很多站长来说还是有用的,检查链接,避免死链的出现,降低搜索引擎惩罚的机率。

DB Cache Reloaded Fix,减少对数据库查询量的执行,缓存对数据库共用的查询,提高网站的访问速度。当然这个插件的优化作用不会很突显,出不上一个好的网络,好的服务器,但至少对网站性能还是有用的。

WordPress Related Posts,相关文章的插件,丰富文章的内链。并且这也是读者所需要的一样东西,因为你的文章写得好,所以才会阅读你的文章。

WP Clean Up,用来清理草稿,文章修订版本的插件,同时也可以优化数据库,减少数据库体积。

WPJAM 七牛镜像存储,对于国外空间来说都建议用七牛镜像加速图片和静态文件,每个用10G的免费加速流量,真心不错,很有业界良心,给到我们这些草根站长一些便利。自身博客的主题加了不少JS效果,可能是因为这个原因,看到网上一些站长也提到过这个问题,所以最后是只用七牛缓存图片,不缓存CSS和JS文件。

微信机器人,将微信公众平台与个人博客联系起来,基础只有单一的搜索功能,不能很好的互动。微信公众平台的宣传是说“再小的个体,也有自己的品牌”,个人独立博客也是强调个人品牌,所以两者的理念是相通。

考虑使用的插件,可能会出现较多兼容性的问题。

WP Super Cache,将博客整站缓存,静态化的一个插件,能提高网站的加载速度。它的功能很全面,但难免跟一些动态的插件或主题产生兼容问题。对于个人博客,不以商业为目的的网站来说,不必强求流量。对于每日几十几百IP的博客来说,对服务器来说也不是什么负荷,不需要用到这个缓存插件。

Use Sinaapp Lib,我爱水煮鱼做的插件,利用新浪SAE加载JS库,对于有自身修改过JS文件的网站或有较多动太效果的主题来说,可能会有一些兼容性问题,而且作者也提到这点,所以使用者自己要注意。

All in One SEO Pack Pro,自己用了很久,以前所有文章都填上标题,摘要和关键词,但对于没有手动填写摘要的人来说,它的自动生成摘要功能不会为中文文章生成摘要,这对搜索引擎的收录是不好的。然后现在博客主题有SEO功能,基本就代替这个插件。但它的功能很完善,对于极致追求SEO的站长来说是很好的工具。

iThemes Security,安全防卫插件,功能很全面,能用插件的方式防止网站被攻击盗取,全英的界面,建议高手使用。现在由于很多CDN都有安全防护功能,例如安全宝,360等,所以现在也没用。建议是购买自己云服务器的人可以使用,增加安全。