アクセストレードに続きバリューコマースも SSL に対応!アフィリエイトのコードを https 化する方法
2016年7月28日より、バリューコマースのアフィリエイト広告が SSL 対応されるようになりました。その際に届いたメールの内容は次の通りです。
アフィリエイト広告のSSL対応の実施が、以下日程で確定いたしましたので、お知らせいたします。
リリース予定日:2016年7月28日(木)
本リリース後、アフィリエイトサイト様がバリューコマース管理画面から新たに広告コードを取得する場合は、SSL対応した広告コードが出力されますので、今後はそちらのコードをご利用くださいますようよろしくお願いいたします。
※すでにご利用されている既存のコード(SSL非対応のもの)はそのまま引き続きご使用いただけます。
2018年に入り、主要とされる大手 ASP は大半が SSL 対応済みになっています。Chrome ブラウザが非 SSL 対応のサイトに対して「保護されない通信」と表示する仕様に変わったことで、https への対応が一気に進むきっかけとなりました。
なぜ SSL 化する必要があるのか?
これまで http が普通だったのに、なぜここに来て https 化しなくてはいけないのか?
SSL とは Secure Sockets Layer の略で、簡単に言ってしまうとインターネット上での通信データを暗号化する技術です。この暗号化により、第三者によるデータ盗聴や改ざんから身を守ることができます。
時代は個人サイトも SSL 対応
個人情報を入力するページや、ネットショッピングでクレジットカードを扱うページでは SSL を利用するのが当たり前になっていますが、個人サイトのレベルでは未対応なのが一般的でした。しかしここに来て、Google から SSL 対応状況を検索結果の順位に反映するとのアナウンスがありました。
Google ウェブマスター向け公式ブログ: HTTPS をランキング シグナルに使用します
つまり、セキュアな通信を行っているサイトかどうかが、良質コンテンツの判断基準の1つに加わったということです。このサイトもそうですが、大半のサイトが検索流入を主体としているので、将来的に対応せざるを得ない状況になったのは確かです。
このアナウンス通知が2014年の夏。当初は、しばらく様子見だろうと思っていましたが、2016年になってようやく周りが動き始めました。
各 ASP サイトが重い腰を上げて、少しずつではありますが SSL 化が進んでいます。そして、レンタルサーバーも SSL 対応のサービスを推してくるようになりました。
XSERVER で独自 SSL が無料になるサービスが始まった
僕は2015年の夏から XSERVER を使っているのですが、2016年6月30日より、全サーバープランで独自 SSL のドメイン認証型 SSL 証明書「Let’s Encrypt」が無料・無制限に利用できるサービスが始まりました。
企業用に利用するのであれば、年間1,000円ほどの CoreSSL か、もしくはそれ以上のサービスを利用するのが一般的です。しかし個人で運営しているようなブログや Web サイトであれば、無料で利用できるもので問題ありません。
2017年の夏を超えたあたりから、XSERVER に限らずレンタルサーバーを運営している各社から無料の SSL 対応サービスが提供されるようになりました。これも時代の流れなので、無償でのサービス追加は利用者にとっても嬉しいですね。
課題は SSL 化していない外部コンテンツの扱い
XSERVER で SSL 証明書が無料で利用できるなら、今すぐにでも https 対応してしまおうと思っていても、まだ対応できない現実があります。それが外部コンテンツの扱いです。
例えば、自身のサイトが SSL 対応して https でアクセスできるようになっても、iframe による埋め込みや、外部の画像ファイルの読込みにおいて該当のコンテンツが SSL 化されていないと、Mixed Content(ミックスドコンテンツ)としてブラウザ上でエラーになってしまいます。
つまり、安全に通信しようとしているサイトの中に、保護されていないコンテンツが混在(ミックス)しているため、コンテンツ自体がブロックされてしまうのです。
単純にアンカータグ(a タグ)で囲ったリンク先が http であるならば問題ありません。しかし、画像ファイル等のアドレスが http で始まっていた場合、そのまま http でデータを取得しようとするため、ミックスドコンテンツとなってしまうのです。
結局、これまで http で参照していたものを SSL 化する場合に https への書き換えが必要になるということです。
アフィリエイトで用いる 1px 画像も SSL 化が必要
いわゆる Web ビーコンと呼ばれるやつです。これはインプレッション数をカウントするもの、つまり自身のページで何回広告が表示されたかをカウントするものです。
ただのテキストリンクでは、クリック数しかカウントできません。そこで Web ビーコンを仕込むことで、表示回数がカウントできるようになり、結果的にクリック率が計算できるようになります。
画面上、目に見えるものではありませんが、外部コンテンツへのリクエストを飛ばしているため、こちらも https のアクセスに変更しないとエラーの扱いとなります。
ASP によっては自己責任でこの 1px の画像を外しても構わないとしているサービスもありますが、本来あるべきコードを改変することになります。ビーコンを外したことで、正しく結果が反映されなくなっては本末転倒なので、ビーコンの扱いは慎重に対応する必要があります。
Web ビーコンを外して、画像リンクを全てテキストリンクへ変更すれば問題ないと説明しているサイトもありますが、ビーコン外しは自己責任だということをお忘れなく!
ASP の SSL 対応状況【2018年5月1日現在】
アフィリエイトを利用しているサイトを SSL 化するか否かは、利用している ASP の状況を踏まえて対応を行わなくてはいけません。
前述のミックスドコンテンツについてですが、http のサイトに https の外部コンテンツを呼び出すのは問題ありません。その逆が NG だと言うことです。テキストリンクについても Web ビーコン(1px の画像ファイル)を利用しないのであれば、エラーになることはありません。
現在は大手の ASP が既に SSL に対応済みです。よって SSL 化における障壁は、無くなったと言っても良いでしょう。
SSL 化【対応済み】ASP
- Google Adsence
- アクセストレード (*1)
- afb(アフィb)
- バリューコマース
- A8.net ← 2016.7.26 対応
- もしもアフィリエイト ← 2016.11.14 対応
- 楽天アフィリエイト ← 2016.12.14 対応
- リンクシェア
- Amazon アソシエイト
*1 [マイページ] → [広告配信設定] より SSL 対応リンクコードを表示するように設定する必要があります。また、広告の種類によっては広告主の画像を直接使っているケースがあり、https に対応していないケースがあります。
afB については、取得するリンクが https へ変更されています。元々 http だったアドレスがそのまま https になっているようなので、アドレスの置換処理を掛ければ問題なさそうです。やり方に不安があるようであれば、再取得して手動で対応を行ってください。
バリューコマースについても同様に、アドレスはそのままでプロトコルのみ https へ更新すれば良いとのことでした。既存アドレスの変換例として、参照するアドレスのプロトコル部分を取り除く一例がメールに載っていました。既存コードの変換方法は後ほど説明します。
A8.net も2016年7月26日に SSL 化対応のお知らせがありました。とうとう対応してくれたと思いきや、バリューコマースのように簡易的に変更する術がなく、変更前後のアドレスを比べてみると、Web ビーコンの URL が変わっているため、全ての広告を貼り直さなくてはいけません。
これは大変な作業になります。せめて簡易的に https の置き換えで対応できるようにして欲しかったですね。
A8.netのアフィリエイト広告タグがSSL化しました。 | A8スタッフブログ
もしもアフィリエイトは2016年11月14日に対応のお知らせがありました。リンクおよびビーコンのサブドメインが変わっているようなので、こちらも置換処理でうまく SSL 対応ができると思われます。
アフィリエイトリンクを【HTTPS対応】しました | もしもアフィリエイト公式ブログ
そして遂に2016年12月14日に、楽天アフィリエイトも SSL 化が対応されました。こちらはプロトコルが http:// から https:// に変更されただけなので、バリューコマース同様の手順にてアドレス変更を行えます。一部のページでは対応が遅れているようですが、概ね SSL 化されているようです。
バリューコマースの SSL 対応方法
SSL 対応を行った広告コードの取得方法は大きく2つ。
まずは広告のコードを再取得して貼り直す方法。設置した広告数によっては、かなり大変な作業になりますが、最もシンプルな方法ですね。
もう1つが、コード内のアドレスやタグを、ツールを用いて一括置換する方法です。ちなみに、仕様変更のお知らせメールに記載されていた変換方法は次の通りです。
<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=×××&pid=●●●●" ~ >
<img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=×××&pid=●●●●" ~ >
<a href="//ck.jp.ap.valuecommerce.com/servlet/referral?sid=×××&pid=●●●●" ~ >
<img src="//ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=×××&pid=●●●●" ~ >
単純に http プロトコルの部分を取り除いたものへ変更するだけです。これだけで https のページからアクセスされた場合は、自動的に https のリソースをリクエストするようになります。
更に今回の仕様変更は SSL 化だけに留まらず、nofollow 対応も同時に行われました。つまり上記変更に加え、nofollow の属性を追加するところまでが変更作業となります。そのままでもアクセスする上で問題はありません。ただ、広告は nofollow にしておかないと、Google からの評価が悪くなる可能性を秘めているので要注意です。
よって nofollow まで対応する場合、変更後のタグは次のようになります。
<a href="//ck.jp.ap.valuecommerce.com/servlet/referral?sid=×××&pid=●●●●" ~ rel="nofollow">
<img src="//ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=×××&pid=●●●●" ~ >
余談ですが、利用規約には「広告コードの改変は禁止」と記載がありますが、SSL 対応、nofollow 対応についてはコード改変しても問題ない旨、メールに記載されていました。
今回のSSL対応の実施と同時に広告コードへの「nofollow」追加が実施されます。
管理画面の【広告スペース管理】ページにてあらたに取得されるコードに含まれるようになります故(「バリューコマース ウェブサービス」で生成されるコードは影響外となります)、既存の掲載広告につきましては、必要に応じてnofollowを追加ください。
※「アフィリエイトサイト運営者利用規約」では、広告コードの改変は禁止とさせていただいておりますが、SSL対応、nofollow対応につきましては、実施いただいて問題ございません。
Search Regex でタグを一括置換する
WordPress で運営している場合、データ内の URL 一括置換を行うのであれば、プラグイン Search Regex を使えば簡単に変更することができます。プラグインを介してダイレクトにデータベースを更新してくれるので、安全かつ確実に変更処理が行えます。
使い方の詳細については、以下のページを参照ください。
ではまずリンクアドレスの方から一括置換を行います。単純に飛び先のリンクを https に変更するだけでなく、nofollow 設定も加えているところがポイントです。
特に正規表現を利用する必要も無いので、単純な置換処理で行えます。タグの直後に rel 属性を加えました。
--検索条件 <a href="http://ck.jp.ap.valuecommerce.com/servlet/referral --置換文字列 <a rel="nofollow" href="//ck.jp.ap.valuecommerce.com/servlet/referral
続いて画像ファイルの SSL 対応です。前述のリンクの変更よりも、ミックスドコンテンツの原因となるこちらの変換の方が重要です。
こちらも単にプロトコル部分を消す置換なので、対応そのものは簡単です。
--検索条件 http://ad.jp.ap.valuecommerce.com/servlet/gifbanner --置換文字列 //ad.jp.ap.valuecommerce.com/servlet/gifbanner
WordPress であればプラグインで簡単に置換が行えますが、他の CMS でも同様のプラグインは存在しているはずです。また、httml ファイルをベタで作成し FTP 転送している場合、テキストファイル一括置換ツールもありますので、そちらを利用してください。
複数のHTML&テキストファイルを一括置換 TextSS.net 公式サイト – 概要
以上、各 ASP における SSL 対応状況と、バリューコマースの広告コードを https 化するための対応方法の説明でした。