Googlebot のフィーチャー検出を無効にするかバイパスする方法(クローラーに JS アプリを提供する際)

Googlebot が JS アプリを完全に表示するように Discourse を設定しようとしていますが、ほぼ完了しました。

@pfaffman の協力と、以下のコード(rails コンソールで実行)により、Chrome でユーザーエージェントを Googlebot または Googlebot スマートフォンに偽装して JS アプリを表示させることができました。

SiteSetting.non_crawler_user_agents="trident|webkit|gecko|chrome|safari|msie|opera|goanna|discourse" + 'rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse'

しかし、Google のモバイルフレンドリーテスト(または Google 検索コンソールの URL 検査)でテストすると、空白のスクリーンショットと以下の HTML が表示されます。

Bing も同様ですが、Bing ではコンテンツが表示されます。Bing がコンテンツを表示するのは、そのクローラーが「モバイル」ではないためだと思います。関連投稿はこちら@sam 氏による)

@david 氏とこちらの投稿によると、「機能検出」が原因のようです。

簡単な回避策があるのではないかと、控えめに楽観視しています。ツールを使用する際、10〜20回に1回程度、Googlebot がアプリを正常にレンダリングします。

Googlebot はページにアクセスする際にすべてのリソースをダウンロードしないことで有名なので、機能検出を引き起こし、ページが正しく表示される原因となっている特定の JS が読み込まれない、というのが私の仮説です。

結論として、Googlebot(または、より簡単な場合は、すべてのクローラー/ボット)に対して機能検出を無効にするにはどうすればよいでしょうか?

編集 用語が間違っているといけないので補足します。「機能検出」が meta で言及されている場合、それはブラウザ検出を指していますか?(おそらく browser-detect.js のようなファイルやその他の依存関係を使用していると思われます)

それとも、「機能検出」とは、Discourse がアプリにアクセスしようとしているテクノロジーを理解しようとする際に実行すること全般を指す広範な表現でしょうか?

GooglebotにJSバージョンを提供したい理由は何ですか?Googleはおそらく、ページネーションされたホームページや、一定数以上の投稿があるトピックを含む、ページネーションされたリストビューを見つけることができないでしょう。ボットビューでは、トピックリストはクロール可能ですが、Googlebotはおそらく無限スクロールをトリガーしないでしょう。

お尋ねいただきありがとうございます。はい、それがGoogleの「ソフトペナルティ」の原因だと考えています。

詳しく説明させてください。

2019年9月/10月頃に非常にずさんなサイトアップデートを行い、メインサイトはそこで壊滅的な打撃を受けました。

回復することはありませんでした。SEOに関しては、サイトがこれほど悪かったことはありません。もちろん完璧ではありませんが、競合他社よりもはるかに進んでいます。私たちの長年の画像やテキストを使用しているサイトが、私たちよりも上位にランク付けされています。私たちは3ページ目にあり、彼らはおそらく2ページ目のトップにいます。

数え切れないほどのSEOブログ、ビデオ、投稿を読み、ジョン・ミューラー(John Mueller)(Redditで)とも何度かやり取りしました。

彼から得られた最大の収穫は、「品質の問題」かもしれないということでした。今年1月1日以降、メインサイトを劇的に改善しました。オーガニックトラフィックにはわずかな変化もありませんでした。

Discourse: 2013年にインストールして、忘れていました。トラフィックをほとんどチェックしませんでした。

メインサイトの分析を見ると、チャートの終盤に急激な低下が見られます。これは、私がDiscourseに取り組み始めたときです。

prerender.ioをDiscourseで試したところ、メインサイトのランキングはバラバラでした。時には一晩で10〜15スポットジャンプし、その後元に戻りました。(メインメニューやログインなどをレンダリングできなかったため、その後prerenderを停止しました。)

オンラインで読んだことから、これはGoogleがどこに配置すべきかわからない兆候です。彼らは、もう少し「追加」すれば、アルゴリズムの良い側にいると言うでしょう。

過去3年間、私たちがSERPでこれらの変動を引き起こしたことは何もありません。

(Googleの否認ツールをいじったり、コードをクリーンアップしたり、URLをクリーンにしたり、サイト構造、内部リンク、ソーシャル、コンテンツなどを調整したりしました。)

「なぜGoogleは2018年に私を罰しなかったのか?」と主張するかもしれません。(その時もDiscourseはサブドメインにありました。)

まあ、それはサイト、その歴史、リンクプロファイルに固有の多くの要因の組み合わせだったと思います。それが2019年後半にサイトを壊滅させた原因です。Googleがサイトのランクを再編成し、おそらくDiscourseのURLに以前よりも多くの重みを与えたようです。

そして、問題は…私はDiscourseが大好きです。特に、メタでより多くの時間を過ごすようになり、私が知らなかったクールなプラグインや機能がたくさんあります。Wiki、サブスクリプション支払い、目次、そして今度のチャット!!

ですから、Discourseから離れることは実際には選択肢ではありません。現時点では投資が多すぎます。

これを考慮しましたが、運を天に任せるつもりです。完璧ではないことはわかっていますが、読んだり見たりしたことから、Googleは最近JSを理解するのが非常に得意になっています。

彼らはAJAXクロールスキームを非推奨にさえしました。

時代は変わりました。今日では、GooglebotがJavaScriptまたはCSSファイルをクロールするのを妨げていない限り、一般的に最新のブラウザのようにウェブページをレンダリングして理解できます。

余談: DiscourseにはAJAXクロール用の設定があります。これは最終的に削除する必要があると思います。


したがって、計画は、アプリをGoogleに配信し、発生する可能性のあるSEOの問題を可能な限り修正し、トラフィックの急増を楽しむことです。

その後、メタで結果を報告し、DiscourseがJSをGoogle向けに最適化することを検討すべきだと主張できます。

たとえば、このようなもの(Googleブログより)は、ページネーションとスクロールの問題に役立つかもしれません。

そして、古いブラウザのために非クローラーバージョンを維持します。

もしよろしければ… :smirk:

GoogleにJSバージョンを送信する前に、いじっていました。

4月上旬頃にJSバージョンをGoogleに送信してテストしました。ほとんどの場合(たとえ壊れて見えても)結果が返ってきたことを覚えています。Googleモバイルツールを使用しました。

このコミットのせいかもしれないと思いました。コードを編集し、再起動しましたが、動作は同じでした。

過去数ヶ月間にブラウザやクローラーの検出を変更した可能性のあるPRやコミットを覚えている人はいますか?

編集 更新が多くてすみません、情報が多いほど良いですよね?

先月prerenderを試していたところ、Googleはフォーラムのインデックスに2000件のURLを追加しました。(ほとんどがこれらのURLです

それらはすべて0.005秒で提供され、prerenderはGooglebotがアクセスできるようにURLをキャッシュしていました。そのため、すべてを迅速に取得しました。

要点は、クローラーがJSなしに「非常に慣れて」しまい、それらの2kページを取得するためにリソースをコミットした可能性があるということです。

それで、それが理解するまで(そしてJSでより多くアクセスする必要があるまで)、サイトはこの方法でアクセスされているのかもしれません。ただの推測です。

Discourseのクロール方法を変更するような作業、例えばprerenderを使おうとしたりしましたか?

GAのランディングページレポートを確認すると、サイトのどの部分に影響があったかについてのヒントはありますか?


メインサイトについては、John Mullerが品質の問題を示唆しているのであれば、品質に関するドキュメントを確認し、それらが適用されるかどうか自問自答してみてください。

ざっと見たところ、2019年のサイトからのリダイレクトチェーンがあり、それがGoogleのクロール可能範囲を超えている可能性があります。

突然のペナルティの候補として、2019年のサイトのURLが6回リダイレクトしていますが、Googleは「5回未満」にするように推奨しており、それ以上だとリダイレクトをたどらない可能性があります。これにより、Googleには古いページがWebから消えたように見えたのかもしれません。

例:

curl -sSL -D - http://flynumber.com/virtual-phone-number/united-states_alexandria_1-318 -o /dev/null -H 'User-Agent: header_bot'

リダイレクトはおそらく最も修正しやすいでしょう。次のようにするのではなく:

/a/b/c/d/e/final-destination

次のようにすることをお勧めします:

/a/final-destination
/b/final-destination
/c/final-destination
/d/final-destination
/e/final-destination

ドアウェイページ自動同義語化もあるようですが、まずは簡単な問題を修正してみてください。それが十分な場合もあります。)

ありがとうございます、ジョシュ、フィードバックに感謝します。

よく見つけましたね。実行は悪かったですが、数ヶ月かかりましたが、Googleはどのページが何を意味するのかを理解し始めたようです。

言い換えれば、古いページで使用されていたキーワードに対して、私が301リダイレクトしたページが徐々に見られるようになりました。

これは非常に理にかなっており、実装方法を検討します。現在、サーチコンソールではクローラーが301に頻繁にアクセスしているようには見えません。ランクが上がると、より多くの301に従うようです。相関関係のない因果関係かもしれません。


Discourseを非難しているわけではありません。「何千ものDiscourseユーザーが素晴らしいオーガニックトラフィックを獲得している」という言葉には、簡単に納得できません。

Googleも私たちには教えてくれません。

Googleはアルゴリズムであり、人間の目線で見ているわけではないことを常に覚えておく必要があります。

両方のバージョンは類似したコンテンツを共有しており、Googleはそれが悪意のあるクローキングではないことを知っていますが、それでもランクを調整する必要があります。

一方のバージョンははるかに見栄えが良く、機能も良く、内部リンク構造の感覚を与えます。もう一方は、強化されたRSSフィードです。

Googleは知りません、私がこの洗練されたフォーラムを持っていて、それがすべての[モダン]デバイスで動作し、真に議論を促進し、インターネットがこれまでに作成した最もクールなものの1つであることを。

クローラーバージョンで「Powered by discourse」のdo-followリンクを常に使用しています。(単純に簡単なので)

繰り返しますが、悪意があるとは思いませんが、Googleの目線で見る必要があります。あなたはFlyNumber(https://community.cloudflare.com/ではありません)は、通常のブラウザには表示しないクローラーバージョンで、この外部リンクを提供しています。

Cloudflareドメイン(非常に権威があるため)に適用されることは、私には適用されません。

ボットに表示する(しかし通常のユーザーには表示したくない)外部リンクのために誰かにお金を払いましたか?それは彼らがサイトをどのように見るかということについてのものです。私はこれがそうであるとは言っていませんが、あなたが排除したい可能性はあります。

最も簡単な言葉で言えば、クローラーバージョンにはメニューや実際の構造がありません。

それがアルゴリズムがエンドユーザーに提供したいコンテンツだと考えているものです。

非常に一般的な観点から、アルゴリズムがそれを評価するとは思えません。

クローラーバージョンの本格的なオーバーホールを検討する時期かもしれません。少なくともメインメニューと下部のおすすめトピックを追加してください。

興味深いアップデート Googleは、私のDiscourseインスタンスのクロール統計に「ファイルタイプ」として「JSON」を追加しました。「JavaScript」は別の「ファイルタイプ」です。

密接に追跡しますが、Googleツールで正しくレンダリングされることを願っています。

最初から私のロジックが間違っていたのではないかと思い始めています。誰も返信しなかったのはそのためかもしれません。おそらく何も問題はないのでしょう。

Googleがスクリーンショットで白いページを表示するのは正常であることについての新しい記事はこちらです。

ホームページの「クロールされた」HTMLを見ることができます。これは「ライブテスト」からのものではなく、インデックスされたバージョンです。ページ全体が表示されます。Googleは、完全なJSアプリを提供しながらこれを理解したことに留意してください。

興味深いのは、インデックス作成に関しては、ホームページの約27番目の投稿まで下がったことです。したがって、無限スクロールはGoogleが理解しているものです。

役立つかわかりませんが、管理設定のajax設定のチェックを外しました。これにより、Googleは以下のようなURLを見つけることができました(そしてクローラーバージョンを提供しました)。チェックを外したところ、そのURLはJSバージョンを表示するようになりました。

https://discuss.flynumber.com/t/japan-phone-numbers-disconnect-notice/2351?_escaped_fragment_=

今、私が理解する必要があるのは、[Discourseがユーザーページ用に作成する余分な正規URL]をどのようにクリーンアップできるかということです。Canonical structure for /u/* causing many urls to be indexed

ディスコースのSPA(フルJSバージョン)を提供してから1か月ほど経ちましたが、クローラーバージョンに戻しました。

私の投稿履歴を参照していただければわかりますが、GoogleはJSバージョンを理解し、クローラーバージョンよりも高く評価する可能性があると主張していました。私は間違っていました。

@j127さん、あなたの言う通りでした!(後ほど個人的に連絡します)

Googleはサイトを理解したようですが、ランキングはほぼ同じ(わずかに低いかもしれません)でした。

クローラーバージョンは4月/5月にリンクの色やフォーマットなどが更新されたので、それも役立ちます。

私の意見では、クローラーバージョンにシンプルなメニューと「おすすめトピック」を追加すれば、全員のSEOにとって大きな違いを生むでしょう。

それ以外は、興味のある方のために共有しておきたかっただけです。

皆さん、素晴らしい仕事です!

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.