スパム登録をやっつけろ

JUGEMテーマ:インターネット 

SEO-P-Link管理者の悩みのひとつであるスパム登録について考えてみた。

迷惑度★★★SEO-P-Link側では歓迎しないサイトの登録
これについては、NGワードをconfig.phpに登録することによって防ぐことが可能である。当グループでは、出会い系・エロ系・カジノ系等サイトの登録はお断りと明記しているし、当然それらが登録出来ないようにNGワードの設定を行っている。
ところが普通のサイトを装い、NG語句を使用しないで新規登録してくるスパム行為が最近目立ってきた。新規登録サイトを覗いてみると超エロサイトだったり、完全な出会い系だったりする。連中は登録後にサイト名や説明文を変更するのであろうか?。

対策①
新規登録時に登録サイトのHTMLタグから、タイトル、キーワード、ディスクリプション、リンク先を取得し、NGワード(サイト説明文)と照合してNGなら登録させないようにしてみた。SEO-P-Linkへ登録するときは、サイト名、説明文等は任意であり、登録サイトのHTMLタグを検査するのはかなり有効たと思う。regist.phpをプチ改

対策②
SEO-P-Linkの修正コマンドをカットして修正不可能にしてみた。どうしても修正したければ削除後に再度新規登録して貰えばよいと思う。template/edit.htmlをプチ改

迷惑度★★★数百数千の発リンクで新規登録する行為
ありとあらゆるSEO-P-Linkへのリンクを1ページに詰め込んで登録してくる超スパマー、最高で3、800リンクってのを見たかな。グーグル様も言っているように発リンク数は99以内が妥当だと思うね。
こういうのに限って、リンク即切りなんだよなぁー!

対策③

これについては以前にもこのブログで発表したように、新規登録時に相手の登録サイトトップ及びリンク設置ページの発リンク数を計量し、設定以上の発リンク数では登録出来ないようにすればよい。regist.php,config.phpをプチ改

迷惑度★★★★新規登録後にリンク即切り
これについては、今のところ対策は無い。こまめに自分が管理するSEO-P-Linkをチェックするしか方法が思いつかないね。

そんなわけで、今回は対策①②③を同時に発表するので、SEO-P-Linkの管理者さんはぜひ導入してもらいたい。

Ver 3.4 なら
regist.php
の160行目あたりと最下段近くに以下の青字を追加するだけである。

        // NGHOST判別
        $nghost = explode(“,”,nghost);
        foreach ($nghost as $value) {
            if (strpos($host,$value) !== false) {
            $error_message .= “<li>このホストからは登録できません。</li>¥n”;
            $err_flag = true;
            break;
            }
        }

        // ■■登録サイトトップページの発リンク数  追加始まり■■
        $link_su = link_num($site_url);
        if ($link_su > top_link_limit ) {
            $error_message .= “<li>登録サイトトップページの発リンク数(“.$link_su.”)が制限を越えています。”.top_link_limit.”以内にしてください。</li>¥n”;
            $err_flag = true;
        }   

        // 登録サイトリンク設置ページの発リンク数
        $link_su = link_num($site_linkpage_url);
        if ($link_su > link_link_limit ) {
            $error_message .= “<li>登録サイトリンク設置ページの発リンク数(“.$link_su.”)が制限を越えています。”.link_link_limit.”以内にしてください。</li>¥n”;
            $err_flag = true;
        }   
        // ■■登録サイトトップページの発リンク数  追加終わり■■

        // ■■登録サイトトップページのNGワード判別  追加始まり■■
        if ($admin_mode != “admin_regist”) {// 管理モードではチェックなし
        // サイトURLのソースを取得
            // サイトURLのhttp://を削除
        $site_url_nonhttp = str_replace(“http://”, “”, $site_url);

        // サイトURLのHostをゲット
        $site_url_host = substr($site_url_nonhttp, 0, strpos($site_url_nonhttp, “/”));

        // サイトURLURLのPathをゲット
        $site_url_path = substr($site_url_nonhttp, strpos($site_url_nonhttp, “/”));
       
        //80接続
        $fp = fsockopen($site_url_host, 80, $ErrNo, $ErrStr, 10);
        if (!$fp) {
        echo “接続できません<br>¥n”;
        }
        else {
            // 読み込みのタイムアウト設定
            socket_set_timeout($fp, 2);
            fputs($fp, “GET “. $site_url_path . ” HTTP/1.0¥r¥nHost:” . $site_url_host . “¥r¥n¥r¥n”);
            while(!feof($fp))
            $html.=fgets($fp, 128);
        }
        fclose($fp);
       
        // 登録サイトのメタ取得
        $html_meta = “”;
        $pattern = “/(?<=<title>).+?(?=<¥/title>)/mis”;
        preg_match($pattern,$html,$html_title);
       
$html_meta.= $html_title[0];

        $pattern = “/(?<=<meta name=¥”description¥” content=¥”).+?(?=¥”)/mis”;
        preg_match($pattern,$html,$html_title);
        $html_meta.= $html_title[0];

        $pattern = “/(?<=<meta name=¥”keywords¥” content=¥”).+?(?=¥”)/mis”;
        preg_match($pattern,$html,$html_title);
        $html_meta.= $html_title[0];

        $pattern = “/(?<=<a href=¥”).+?(?=<¥/a>)/mis”;
        preg_match_all($pattern,$html,$match);
        $html_meta.= implode(” “, $match [0]);

        // NGワード判別
            $word = explode(“,”,ngword);
            foreach ($word as $value) {
                if (strpos($html_meta,$value) !== false) {
                $error_message .= “<li>登録サイトのHTMLタグに使用できない文字が含まれています。</li>¥n”;
                $err_flag = true;
                break;
                }
            }
        }
        // ■■登録サイトトップページのNGワード判別  追加終わり■■

        // NGIP判別
        $ngipaddr = explode(“,”,ngipaddr);
        foreach ($ngipaddr as $value) {

footer (site_title);

function link_num($get_url){
    // $html = file_get_contents($get_url);
       
        // サイトURLのhttp://を削除
        $site_url_nonhttp = str_replace(“http://”, “”, $get_url);

        // サイトURLのHostをゲット
        $site_url_host = substr($site_url_nonhttp, 0, strpos($site_url_nonhttp, “/”));

        // サイトURLURLのPathをゲット
        $site_url_path = substr($site_url_nonhttp, strpos($site_url_nonhttp, “/”));
       
        //80接続
        $fp = fsockopen($site_url_host, 80, $ErrNo, $ErrStr, 10);
        if (!$fp) {
        echo “接続できません<br>¥n”;
        }
        else {
            // 読み込みのタイムアウト設定
            socket_set_timeout($fp, 2);
            fputs($fp, “GET “. $site_url_path . ” HTTP/1.0¥r¥nHost:” . $site_url_host . “¥r¥n¥r¥n”);
            while(!feof($fp))
            $html.=fgets($fp, 128);
        }
        fclose($fp);
    $pattern = ‘/<a href=”?([^"¥s]+).*?>(.+?)<¥/a>/is’;
    $match = array();
    preg_match_all($pattern, $html, $match);
    $match [1] = array_unique($match [1]);
    $link_num = count( $match [1] );
    return $link_num;
}

?>

template/edit.htmlのプチ改
以下のように、赤字を削除青字を追加。
<body>
<h1>修正・削除</h1>
<div id=”wrapper”>

    <div class=”navi_menu”>
    <a href=”<?php echo site_url; ?>”><?php echo site_title; ?>トップへ</a>&nbsp;&gt;&nbsp;
        <a href=”<?php echo linkpage_url; ?>”><?php echo linkpage_title; ?></a>&nbsp;&gt;&nbsp;
    <strong>修正・削除</strong></div>

<div id=”mid_block”>
    <div class=”title”>修正・削除フォーム</div>
    <div class=”content”>
    <p>修正・削除から<? echo linkpage_title; ?>の登録内容を修正できます。</p>
    <p><strong>スパム登録

カテゴリー: SEO-P-Linkプチ改   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>