一种ZBLOG群发器的设计思路

PHP 十五楼的鸟儿 195浏览 4评论

本文介绍一种对于ZBLOG博客系统的群发方案,对于没有开启验证码的ZBLOG程序有效,ASP和PHP版本都存在这个问题。

ZBLOG作为国内知名的PHP博客类程序,有着广泛的用户基础,其ASP版本已经有超过10年的历史,PHP版本虽然时间较短,但是用户规模仍不可小觑。

为什么要群发

群发是一种非常快速有效的获取反链的方法,尤其对于一些新站点或者一些灰色项目类的网站,群发无疑是一种低成本的SEO方式。优质反链获益虽高,但是有效发布并能存活的概率并不高,比如百度百科词条、百度知道等,而对于普通小规模站点的群发,确实收益颇丰的。

群发思路

ZBLOG在没有开启验证码时,表单提交仅为一个普通的POST表单,有token验证,但是token的有效期高达24小时,其中不同文章token值是不同的,但是24小时内是完全不会发生变化的。

在这样的条件下,可以通过网络抓取的手段,对目标网站的sitemap.xml文件进行抓取和解析,针对其中每一篇文章,缓存一个txt文件(愿意的话也可以存数据库),然后动态、随机、大量的进行Post提交。

需要注意几点的是:

1、zblog自带totoro插件,提交时建议不要过于频繁,先了解一下此插件的屏蔽关键词范围,以免触发此插件的拦截动作(一旦进入IP黑名单,将无法继续提交);

2、每次评论不允许内容相同,但是内容里随便加点什么随机数都可以绕过去;

范例代码

本文以php代码为例,写出Post完整过程,如使用客户端代码C#,delphi等将有更高效的实施方式。

//获取并保存表单action代码段
function fpost_loadkey($article_id,$host) {
    global $zbp;
    $time=time();
    $url=$host.'post/'.$article_id.'.html';
    $fpostkeyfile = $zbp->path."tools/fpostkey_".md5($url)."_".$article_id."_".date("Y-m-d",$time).".txt";   

    if (!file_exists($fpostkeyfile)) {
      $content=GetHttpContent($url);
      $reg  = '/action=[\'|"](.*)[\'|"]\s/';
      if (preg_match ($reg, $content,$matches)) {
        $endurl=$matches[1];
       } else {
        echo "not found.";
       }
      @file_put_contents($fpostkeyfile, $endurl);
    }  
    $key = file_get_contents($fpostkeyfile);                  
    return $key;
}
//读取并解析xml代码段
$xml_array=simplexml_load_file('sitemap.xml'); //将XML中的数据,读取到数组对象中
$strxml='';
foreach($xml_array as $tmp){
$strxml.= $tmp->loc."\r\n";
//此处接循环Post代码
}
//展开页面的执行脚本
var arrayname = ['阿里云','阿里云金牌代理','阿里云优惠码','阿里云ECS'];
var arrayContent = ['阿里云优惠码','阿里云优惠码2','阿里云优惠码3','阿里云优惠码4'];
function GetText(arr){
    return arr[Math.floor(Math.random()*arr.length)];
}
function DoubiVerifyMessage2(name,content) {
 var de;
  de=document.body.appendChild(document.createElement('iframe'));
  de.src='about:blank';
  de.contentDocument.write('<form method="POST" action="<?php echo $endurl;?>"><textarea name="inpAjax">true</textarea>  <textarea name="inpID"><?php echo $article_id;?></textarea><textarea name="inpEmail">[email protected]</textarea><textarea name="inpName">'+name+'</textarea><textarea name="inpHomePage">http://www.birdol.com</textarea><textarea name="inpArticle"><?php echo mt_rand(00000, 99999);?>'+content+' </textarea></form>');
  de.contentDocument.forms[0].submit();
    return false;
}
var y=['1','2','3','4','5'];
var x;
for (x in y){
DoubiVerifyMessage2(GetText(arrayname),GetText(arrayContent));
}

写在最后

其实本文只是希望各位ZBLOG用户能打开验证码功能而已。

转载请注明:鸟儿博客 » 一种ZBLOG群发器的设计思路

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. 访客
    一般般啦!对我没有什么用
    匿名 游客 8个月前 (05-10)回复
  2. 访客
    博主的主题不错,我很喜欢!
    匿名 游客 8个月前 (05-10)回复
  3. 访客
    我的博客用的就是它
    林龙博客 游客 8个月前 (05-10)回复