Ruby on Rails甚のサむト蚪問者゜ヌシングモゞュヌル

この投皿は䞻にWeb分析に関するものです。サむトぞの蚪問者の゜ヌスを正しく識別する方法、およびこの困難なタスクに圹立぀Ruby on Railsのモゞュヌルに぀いおです。 最埌に、Railsコミュニティに泚意を払うようにお願いする小さな郚分がありたす。それは私ずRailsに関するものです。 しかし、順番に芋おみたしょう。

パヌト1 Web分析ず蚪問者の゜ヌスの決定に぀いお


問題

かなり些现な䜜業がありたす私たちのサむトに来た蚪問者の゜ヌスを特定するこずです。 私はあなたのこずは知りたせんが、長い間、GoogleアナリティクスのCookieの本䜓に寄生しおいたした。 私たちの分析は、゜ヌスの曞き換え、セッションのアカりンティングの問題を解決し、䞀般に、解析リファラヌのすべおの費甚を排陀したした。 しかし、良いこずはすべお終わりたす。

GoogleがUniversalのベヌタ版をリリヌスしたずき、遅かれ早かれ、Google Cookieに別れを告げ、それを自分で行う方法を孊ぶ必芁があるこずが明らかになりたした。 しかし、それ以来、圌はClassicずUniversalの非互換性を宣蚀したした。これたでのずころ、あなたは正確に座るこずができたした。Classicは長い間サポヌトされたす。

GA Cookieの新しいバヌゞョンでは、ナヌザヌIDが1぀だけ残っおいたす。 分析はそれをサヌバヌに送信し、そこですべおの蚈算を既に実行したす。 そしお今では、Cookieやjsを介しお゜ヌスから゜ヌスに関する情報を取埗するこずはできたせん。

しかし最近、Googleはナヌザヌをスティックで優しく突くようになりたした。プロファむルコンバヌタヌ-Classic→Universalを展開したした。 そしお、ここでロヌルのりィグリングを開始する必芁がありたす。リマヌケティングリストがUniversalに远加された時点で、クラシックアナリティクスは最終的なリヌダヌを受け取りたす。 そしお、これはそれほど遠くないず思いたす。

この点で、私は自䜜のutmz cookieゞェネレヌタヌに生たれたした。 そしおそれを゜ヌスバスタヌず呌びたした。

最初にフォヌムに぀いお

ゞェネレヌタヌは、 Ruby on Rails甚のマりント可胜な゚ンゞン圢匏で䜜成されおいたす 。 すべおのRailsアプリケヌションにgemずしお玠早く調敎し、コン゜ヌルからの単䞀コマンドで曎新できたす。 モゞュヌルは独立しおおり、それ自䜓ですべおを実行したす。 ゜ヌスに関するデヌタを䜿甚しお、電話番号、サむト䞊のコンテンツを眮き換え、アプリケヌションずずもに保存し、さらなる分析に䜿甚できたす。 特定のルヌルに埓っお、モゞュヌルは゜ヌスおよび倚数のパラメヌタヌを蚈算し、蚪問者のCookieに保存したす。

GitHubぞの盎接リンク https : //github.com/alexfedoseev/sourcebuster
私はただREADME.rdocの蚭蚈を理解しおいたせん。その過皋で、すぐに修正したす。

コンテンツに぀いお

ほずんどのロゞックはGAロゞックを繰り返したすが、いく぀かの違いがありたす。
デヌタ構造から始めたしょう。

デヌタ構造

合蚈で、4぀の䞻芁な皮類のトラフィックがありたす。
  1. utm -utmタグでマヌクされたトラフィック
  2. オヌガニック -オヌガニック怜玢゚ンゞンの結果からのトラフィック
  3. 玹介 -玹介トラフィックサヌドパヌティのリ゜ヌスからのリンク
  4. typein-盎接遷移

以䞋の画像のフィルタリングロゞック
画像

したがっお、蚪問者をこれらの4぀のバスケットに詰めたす。
次に、1人の蚪問者が異なる゜ヌスから異なる時間にサむトにアクセスできるため、゜ヌスを曞き換えるためのルヌルを䜜成する必芁がありたす。

゜ヌスを曞き換えるロゞック

曞き換えロゞックは、Googleアナリティクスのロゞックに埓いたす。
画像

参照リンクは、珟圚のセッションで䜕も䞊曞きしないこずに泚意しおください。 理由-䟋で説明したしょう。倚くの堎合、珟圚の蚪問䞭に、蚪問者は実際の゜ヌスではないサヌドパヌティのリ゜ヌスからサむトにアクセスしたす。たずえば、登録を有効にするリンクがあったメヌルサヌビスからです。
このシステムでは、珟圚の蚪問に関するデヌタを䞊曞きするこずに加えお、最初の蚪問に関するデヌタを保存するこずにしたした。 ぀たり、倉換時に、蚪問者の最初ず珟圚の゜ヌスに関するデヌタが埗られたす。

モゞュヌルを䜿甚しお正確に匕き出すこずができるもの


モゞュヌルのむンストヌル
モゞュヌルを固定したいRailsアプリケヌションが既にあるず仮定したす。

Gemfileアプリケヌションで、次を远加したす。
gem 'sourcebuster', :git => "git@github.com:alexfedoseev/sourcebuster.git" 

むンストヌル
 bundle install 

これはマりント可胜な゚ンゞンであるため、分離された名前空間に存圚したす。
routes.rbを远加しお、アプリケヌションにマりントしたす。
 mount Sourcebuster::Engine => "/sourcebuster" 

次に、すべおの移行をコピヌしお実行する必芁がありたす。
コピヌ
 bundle exec rake sourcebuster:install:migrations 

そしお実行
 bundle exec rake db:migrate 

デヌタベヌスには3぀の新しいテヌブルがありたす。
  • sourcebuster_referer_sources
    カスタム゜ヌスデヌタ。
  • sourcebuster_referer_types
    玹介の皮類に関するデヌタ玹介トラフィックの堎合は基本的にutm_medium。
  • sourcebuster_settings
    アプリケヌション蚭定セッション期間ずサブドメむン凊理。

それらを䜿甚しお䜕もする必芁はありたせん。既にデヌタがすぐに䜿甚でき、それらのむンタヌフェむスがありたす。

マりント可胜な゚ンゞンの詳现-http://guides.rubyonrails.org

モゞュヌルはほずんど接続されおいたすが、最埌のタッチは残りたす。アプリケヌションのどこにでもCookieを蚭定できたす。 これを行うには、 アプリケヌションのapplication_controller.rbに远加したす。
 class ApplicationController < ActionController::Base include Sourcebuster::CookieSettersHelper before_filter :set_sourcebuster_data helper_method :extract_sourcebuster_data # some code private def set_sourcebuster_data set_sourcebuster_cookies end end 

準備完了のようです。 ゚ンゞンはメむンアプリケヌションテンプレヌトを䜿甚するため、スタむルを自分でカスタマむズできたすこれを倉曎する可胜性がありたす。 䜕かがうたくいかない堎合、私は䜕かを芋逃す可胜性がありたす-曞き蟌み。


䜿甚する

モゞュヌルを䜿甚する堎合、 これはベヌタ版であり、かなりの開発経隓のある人によっお曞かれたものであるこずを考慮しおください投皿の最埌にいく぀かの段萜がありたす。

このモゞュヌルは以䞋のメ゜ッドを提䟛したすより正確には、メ゜ッドは1぀だけですが、異なるデヌタを匕き出したす

モゞュヌルメ゜ッド
 # C    (utm / organic / referral / typein) extract_sourcebuster_data(:sb_first, :typ) # C  utm_source extract_sourcebuster_data(:sb_first, :src) # C  utm_medium extract_sourcebuster_data(:sb_first, :mdm) # C  utm_campaign extract_sourcebuster_data(:sb_first, :cmp) # C  utm_content extract_sourcebuster_data(:sb_first, :cnt) # C  utm_term extract_sourcebuster_data(:sb_first, :trm) #    (utm / organic / referral / typein) extract_sourcebuster_data(:sb_current, :typ) #  utm_source extract_sourcebuster_data(:sb_current, :src) #  utm_medium extract_sourcebuster_data(:sb_current, :mdm) #  utm_campaign extract_sourcebuster_data(:sb_current, :cmp) #  utm_content extract_sourcebuster_data(:sb_current, :cnt) #  utm_term extract_sourcebuster_data(:sb_current, :trm) #     extract_sourcebuster_data(:sb_first_add, :fd) #   extract_sourcebuster_data(:sb_first_add, :ep) #  ,      extract_sourcebuster_data(:sb_referer, :ref) # ip  extract_sourcebuster_data(:sb_udata, :uip) #   user agent extract_sourcebuster_data(:sb_udata, :uag) 


モゞュヌルテストペヌゞ http : //sandbox.alexfedoseev.com/sourcebuster/showoff
さたざたな゜ヌスからアクセスしお、モゞュヌルが決定した内容を確認できたす。

このモゞュヌルでは、いく぀かの远加パラメヌタヌを構成するこずもできたす。

デフォルト蚭定

むンタヌフェヌス http : //sandbox.alexfedoseev.com/sourcebuster/settings

セッション期間
ナヌザヌの最埌のアクティビティから、蚪問が完了したずみなされるたでの時間。 デフォルトでは30分で、分単䜍で瀺されたす。

サブドメむン凊理
これは基本的にGAの_setDomainNameに類䌌しおいたす。 䟋で説明したす。
サブドメむンがあるサむトがあるずしたしょう

たた、 site.comペヌゞからblog.site.comぞの遷移を内郚的な非参照遷移ず芋なしたす ぀たり、1぀のサブドメむンから別のサブドメむンに切り替えおも、゜ヌスは䞊曞きされたせん。 これを行うには、蚭定で「サブドメむンがあり、それらの間のトラフィックはリフェラルであっおはならない」をチェックする必芁があり、 「メむンホスト」フィヌルドでサむトのルヌトホストを远加したす。そのサブドメむンはすべお、モゞュヌルによっお1぀のサむトず芋なされたす。 ここでは、 「site.com」が瀺されおいたす。

フィヌルドにblog.site.comを指定するず、 alex.blog.site.comからblog.site.comぞの移行は非参照になり、 alex.blog.site.comからshop.site.comぞの移行は既に参照になりたすトラフィック。

远加の゜ヌス

むンタヌフェヌス http : //sandbox.alexfedoseev.com/sourcebuster/custom_sources

システムには、倚数の远加゜ヌスの凊理をカスタマむズする機胜がありたす。
蚭定は、次のパラメヌタヌに埓っお行われたす。

この衚の䟋は、䟋で説明する最も簡単な方法が必芁です。

䟋1
システムでBing怜玢からオヌガニックトラフィックぞの移行を怜蚎する必芁がありたすこれは事実です。
bing.comにアクセスし、怜玢ボックスに「apple」ずいうク゚リを入力するず、次の圢匏のアドレスを含む怜玢ペヌゞにリダむレクトされたす。
www.bing.com/search  q = apple go =qs = nform = QBLHpq = applesc = 8-5sp = -1sk =cvid = 718ad07527244c319ecebf44aa261f64

それに基づいお、新しい特別な゜ヌスを䜜成したす。

これで、そのようなペヌゞに由来するすべおのものがオヌガニックトラフィックず芋なされたす。

䟋2
゜ヌシャルからの移行を匷調する必芁がありたす。 別のグルヌプのネットワヌク。
同様のパタヌンに埓いたす。

できた これで、facebookからのすべおのクリックリンクutmタグでマヌクされたものを陀くは、゜ヌシャルチャネルの䟡倀を持぀ようになりたす。

ドメむンフィヌルドでは、ゟヌン.com、.com.ruなどを完党に指定する必芁がありたす。 倀facebook.comを指定するず、ドメむンfacebook.com.ruからのトラフィックはこのフィルタヌに該圓したせん。 そしお、ドメむンm.facebook.comから-取埗したす。


テスト

゜ヌス https : //github.com/alexfedoseev/sourcebuster/blob/master/test/integration/navigation_test.rb
テストの倧郚分は、゜ヌスが正しく識別および曞き換えられおいるこずを確認するためのセレンテストです。 これらはRubyで䜜成されたしたが、モゞュヌルのコヌドだけでなく、原則ずしおすべおの実装たずえば、誰かがphpたたはjsに移怍した堎合をチェックできるように実装されおいたす。 ぀たり、メ゜ッドをテストするのではなく、䜜業の結果をテストしたす。 たた、ここでは代理リファラヌは䜿甚されたせんが、実際のリ゜ヌスからの実際の遷移がテストされたす。 たた、Yandexが発行䞭に䜕かを倉曎した堎合たずえば、httpsに切り替えるずリファラヌが匷制終了されたす、テストでそれが衚瀺されたす。 すべおが本圓に短いです。

これで、テストは非垞に重芁であり、テスト自䜓が蚘述されおいたすが、必芁に応じお理解できたす。
曞き換えられたコヌドをテストするには、次のものが必芁です。

䞊郚のコヌドブロックには、テストを実行する前に構成する必芁がある定数が含たれおいたす。 それらから、䜕を正確に準備する必芁があるかが明確です。

はい、テストの実行には玄20〜30分かかりたす。

私は繰り返したすモゞュヌルの操䜜䞭、 これはベヌタ版であり、かなりの開発経隓を持぀人 これに぀いおは以䞋のいく぀かの段萜 によっお曞かれたこずを考慮しおください。


パヌト2 私ずRailsに぀いお


私は3.5幎むンタヌネットマヌケティングに携わっおきたしたが、それほど昔ではありたせんが、トラフィックの生成は私のものではないずいう結論に達したした。 トラフィックではなく意味を生成したい。 そしお、コヌドを曞き始めたした。 それは玄9ヶ月前に起こりたした。 私はIT数孊の背景を持っおいたせん。最初から自分自身ですべおを掘り䞋げなければなりたせんでした。 クリス・パむン、マむケル・ハヌトル、その他のむンタヌネットの本は私を助けおくれたした。

その結果、私は自分でブログを曞きたしたが、玄5か月前に䌑憩を䜙儀なくされ、このモゞュヌルはダりンタむム埌に最初に曞いたものです。 Railsコミュニティのメンバヌに、実装を批刀し、明確でそれほど悪くない孊校を指摘するようお願いしたす。 この間ずっず、Rubyで曞いおいる生きおいる人に䌚うこずはできたせんでした。すべおを理解するこずは非垞に困難です。

批刀を事前に感謝し、この投皿が誰かに圹立぀こずを願っおいたす。 がんばっお。

Source: https://habr.com/ru/post/J208112/


All Articles