この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレス魔改造 オートブログ講座2 第十七回目 自動記事作成オートブログボット クロスドメインを突破する

  • ワードプレスで作るオートブログ講座2

では実際にひとつひとつ順を追って構築して行きたいと思います。
まずは、クロスドメインの単独テストからです。

因みにクロスドメインというのは、異なるドメインを跨いで処理をする、という意味です。要するに自分のサイトではない他所のサイトを操作する、ということです。
ここですぐに思いつくのが、そんなことをするとセキュリティ的に危ないのでは? という懸念です。

大正解です。実際、ハッキングの手段としてクロスサイトスクリプティングで遠隔攻撃する手法が流行っています。セキュリティ的な問題から通常はJavaScriptではクロスドメイン間の突破は不可能となっています。

どうしてクロスドメインを突破したいのか説明すると、例えばJavaScriptではなくてPHPを使って検索エンジンにアクセスするとします。PHPであれば簡単にバッググラウンドで異なるサイトにアクセスが可能なのですが、大きな問題があります。それはなにかというと、IPアドレスが変わらない、ということです。

サーバーサイドで動くPHPやPerlなんかは、レンタルサーバーのコンピュータ上で動いているので、IPアドレスが変わらないのです。変わらないということはどういうことかというと、何度もアクセスしていると、痕跡が簡単に残ってしまう、ということです。
またサーバーにも多大な負荷を掛けることになり注意を受けます。

例えば、大抵の検索エンジンはウェブボット避けとして短時間に重度のアクセスを受けるとアクセスを遮断してきます。IPアドレスが固定だと時間を調整して何回かは可能ですが、短時間に成果を上げるようなアクセスは不可能となります。

そこでIPアドレスが毎回変わり、様々な環境でアクセスするには? という課題が出てくるわけですが、それを解決するのがJavaScriptです。自分のサイトに訪問した時に、JavaScriptを動作させてバッググラウンドでクロスドメイン間の通信ができればどうでしょうか?

例えば、検索ユーザーが訪問した時に、ユーザーが検索したキーワードを推定し、バッググラウンドでそのキーワードで検索した結果をシームレスにユーザー提供できれば、コンテンツを常に用意する必要がなくなります。
バッググラウンドでデータを持ってこられるので、時刻表や統計データ、ランキングといった情報をリアルタイムにユーザーに提供できることになります。はずなのですが、通常はJavaScriptではクロスドメイン間の突破は不可能となっています。

しかし「通常は」とあるように「異常」な方法を使うとクロスドメイン間の突破が可能となります。
クロスドメインの制約を突破するには「jquery.xdomainajax.js」を使います。
「jquery.xdomainajax.js」はJQueryのライブラリのひとつで誰でも使うことが出来ます。
このライブラリを使うことで拍子抜けするほど簡単にクロスドメインを突破できてしまいます。

突破はできるのですが、いくつか落とし穴があります。これにハマりました。
「jquery.xdomainajax.js」がなぜクロスドメインを突破できるのかというと、ソースコードを見ると分かるのですが、Yahoo APIを使用しているからです。つまり、Yahoo APIにアクセスして、Yahoo!に目的のサイトにアクセスさせJSONPかなにかで結果を取り出しているのです。
なんのことはないのですが、Yahoo!のサーバーを介してクロスドメインを実現しています。

なので当然のことなのですが、このライブラリでは日本の三大検索エンジンである「Google」「Yahoo!」「Bing」にアクセスしようとすると空っぽの結果が返ってきます。ガードされてるんですねぇ。
トップページにはアクセスできるのですが、検索クエリを送ることができないのです。

そこで次善の策として「goo」「Excite」「百度」といったセカンドを利用します。マイナーな検索エンジンであればアクセスができるようです。検索エンジンにアクセスするのはキーワードに紐付けされたURLのリストを取得するのが目的なので、Googleとかでなくてもいいわけです。

ではまず「jquery.xdomainajax.js」の入手から。

▼jquery.xdomainajax.jsのダウンロード

A collection of jQuery plugins. Contribute to jquery.fn development by creating an account

[browser-shot width=”600″ url=”https://github.com/padolsey/jquery.fn/tree/master/cross-domain-ajax”]

「jquery.xdomainajax.js」と書かれたリンクをクリックします。
75行ほどのソースが出てくるので全てコピーをします。それをテキストエディタに貼り付けて「jquery.xdomainajax.js」という名前で保存します。保存する際は文字コードを「UTF-8」として下さい。
私と同じフォルダ構造にしたければ「js」というサブフォルダを作りそこに保存しておいて下さい。
なお、JQueryの入手については面倒なのでCDN(ライブラリをダウンロードして自サイトにおかなくても配布サーバーから借りられるサービス)を使って借りてきます。使うバージョンは「1.11.0」です。

とりあえず実験してみましょう。サンプルのコードは以下の通りです。
コメントを付けておいたので分かりやすいと思います。

関連記事