
Sora Fujimoto
AI Solutions Architect

ウェブスクレイピングプロジェクトに取り組んでいる場合、User-Agent文字列を変更することは、スクレイパーがブロックされたり、ボットとしてフラグ付けされたりするのを防ぐ最も効果的な方法の1つです。Webサーバーは、User-Agent文字列を使用して、リソースにアクセスしているクライアントの種類(ブラウザ、ボット、スクレイパーなど)を識別することがよくあります。スクレイパーが各リクエストで同じUser-Agentを送信すると、検出され、ブロックされる可能性があります。この記事では、Goの一般的なウェブスクレイピングフレームワークであるGo CollyでUser-Agentを変更して、スクレイピングの取り組みをより効果的で回復力のあるものにする方法について説明します。
Collyは、高速でエレガントなGophersクロールフレームワークです。Collyは、あらゆる種類のクローラー/スクレイパー/スパイダーを作成するためのクリーンなインターフェースを提供します。Collyを使用すると、ウェブサイトから構造化されたデータを簡単に抽出し、データマイニング、データ処理、アーカイブなど、幅広いアプリケーションに使用できます。
User-Agentは、リクエストヘッダーに見られる特殊な文字列で、サーバーがクライアントのオペレーティングシステムとそのバージョン、ブラウザの種類とそのバージョン、その他の詳細を識別できるようにします。
通常のブラウザの場合、User-Agent文字列は次のようになります。
Windowsオペレーティングシステム上のGoogle Chromeバージョン128:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
Firefox:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0
ただし、Colly(ウェブスクレイピングフレームワーク)では、デフォルトのUser-Agentは次のとおりです。
colly - https://github.com/gocolly/colly
データスクレイピングのコンテキストでは、最も一般的な反スクレイピング対策の1つは、User-Agentを調べて、リクエストが通常のブラウザから来ているかどうかを判断することです。これにより、ボットを識別することができます。
CollyのデフォルトのUser-Agentは、明らかにターゲットウェブサイトに「私はボットです」と直接伝えているようなものです。これにより、ウェブサイトは、デフォルトの設定でCollyを使用しているスクレイピングの試みを簡単に検出してブロックすることができます。
トップキャプチャソリューションのボーナスコードを請求しましょう。 CapSolver: WEBS. コードを引き換えると、各チャージ後に5%のボーナスが追加され、無制限になります。
コードに飛び込む前に、User-Agentを変更することが重要な理由を簡単に見てみましょう。
確かに!テキストを英語に翻訳して、適切にフォーマットします。以下は、翻訳およびフォーマットされたバージョンです。
https://httpbin.org/user-agentにアクセスすることで、User-Agentの値を確認できます。Collyは、リクエストを処理するために、主に3つの方法を提供しています。
以下は、httpbinにアクセスしてUser-Agentを出力する完全なコード例です。
package main
import (
"github.com/gocolly/colly"
"log"
)
func main() {
// コレクターを作成する
c := colly.NewCollector()
// onResponseコールバックを呼び出して、HTMLコンテンツを出力する
c.OnResponse(func(r *colly.Response) {
log.Println(string(r.Body))
})
// リクエストエラーを処理する
c.OnError(func(e *colly.Response, err error) {
log.Println("リクエスト失敗、エラー:", err)
})
// スクラピングを開始する
err := c.Visit("https://httpbin.org/user-agent")
if err != nil {
log.Fatal(err)
}
}
これは、次の出力を生成します。
{
"user-agent": "colly - https://github.com/gocolly/colly"
}
Collyは、colly.UserAgentメソッドを提供してUser-Agentをカスタマイズします。各リクエストに異なるUser-Agentを使用する場合は、User-Agentのリストを定義して、そこからランダムに選択することができます。以下は例です。
package main
import (
"github.com/gocolly/colly"
"log"
"math/rand"
)
var userAgents = []string{
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 OPR/113.0.0.0",
}
func main() {
// コレクターを作成する
c := colly.NewCollector(
// User-Agentを設定する
colly.UserAgent(userAgents[rand.Intn(len(userAgents))]),
)
// onResponseコールバックを呼び出して、HTMLコンテンツを出力する
c.OnResponse(func(r *colly.Response) {
log.Println(string(r.Body))
})
// リクエストエラーを処理する
c.OnError(func(e *colly.Response, err error) {
log.Println("リクエスト失敗、エラー:", err)
})
// スクラピングを開始する
err := c.Visit("https://httpbin.org/user-agent")
if err != nil {
log.Fatal(err)
}
}
カスタムUser-Agentリストを維持する代わりに、fake-useragentライブラリを使用してランダムなUser-Agentを生成することができます。以下は例です。
package main
import (
browser "github.com/EDDYCJY/fake-useragent"
"github.com/gocolly/colly"
"log"
)
func main() {
// コレクターを作成する
c := colly.NewCollector(
// User-Agentを設定する
colly.UserAgent(browser.Random()),
)
// onResponseコールバックを呼び出して、HTMLコンテンツを出力する
c.OnResponse(func(r *colly.Response) {
log.Println(string(r.Body))
})
// リクエストエラーを処理する
c.OnError(func(e *colly.Response, err error) {
log.Println("リクエスト失敗、エラー:", err)
})
// スクラピングを開始する
err := c.Visit("https://httpbin.org/user-agent")
if err != nil {
log.Fatal(err)
}
}
CollyでUser-Agentをランダム化しても、ある程度はボットとして識別されるのを回避できますが、より洗練された反ボットチャレンジに対処する場合には、十分ではない可能性があります。このようなチャレンジの例としては、reCAPTCHA、captcha、captcha、captcha WAF、captcha、Cloudflare Turnstileなどがあります。これらのシステムは、リクエストヘッダーの有効性をチェックし、ブラウザのフィンガープリントを検証し、IPのリスクを評価し、複雑なJS暗号化パラメータや難しい画像認識タスクを要求する場合があります。
これらのチャレンジは、データスクレイピングの取り組みを大幅に阻害する可能性があります。しかし、心配する必要はありません。上記すべてのボットチャレンジは、CapSolverによって処理できます。CapSolverは、AIベースの自動Webアンブロックテクノロジーを使用して、CAPTCHAを自動的に解決します。すべての複雑なタスクは、数秒で正常に解決できます。
公式ウェブサイトは、複数の言語でSDKを提供しており、プロジェクトに簡単に統合できます。スクレイピングプロジェクトにこのソリューションを実装する方法の詳細については、CapSolverのドキュメントを参照してください。
確かに!Go CollyでUser-Agentを変更する記事の結論を次に示します。
Go CollyでUser-Agentを変更することは、効果的で回復力のあるウェブスクレイピングを実現するための重要なテクニックです。カスタムUser-Agentを実装することで、スクレイパーがターゲットウェブサイトによって検出され、ブロックされるリスクを大幅に軽減できます。以下は、これまで説明してきた主要なポイントのまとめです。
ウェブスクレイピングプロジェクトでUser-Agentを変更することが重要な理由について説明しました。
CollyでカスタムUser-Agentを設定するさまざまな方法を調べました。これには、次のようなものがあります。
これらのテクニックが、実際のブラウザの動作を模倣し、検出を回避するのにどのように役立つかを説明しました。
より高度な反ボットチャレンジの場合、CAPTCHAやその他の複雑な検証システムを処理するために、CapSolverなどの専門ツールを使用することについて説明しました。
User-Agentを変更することは効果的な戦略ですが、責任ある効率的なウェブスクレイピングの一部分に過ぎないことを忘れないでください。常にウェブサイトの利用規約とrobots.txtファイルを尊重し、レート制限を実装し、スクレイピング活動の倫理的な影響を考慮してください。
これらのテクニックをウェブスクレイピングのベストプラクティスと組み合わせることで、Go Collyを使用してより堅牢で信頼性の高いスクレイパーを作成できます。ウェブテクノロジーは進化し続けているため、最新のスクレイピングテクニックとツールを最新の状態に保つことが、ウェブスクレイピングプロジェクトの効果を維持するために不可欠となります。
重要: ウェブスクレイピングを行う際には、法的および倫理的なガイドラインに従うことが重要です。常に、ターゲットウェブサイトをスクレイピングする許可を得ていることを確認し、サイトの
robots.txtファイルと利用規約を尊重してください。CapSolverは、非準拠の活動にサービスを悪用することを強く禁止しています。 適切な承認なしにCAPTCHAを回避するために自動ツールを悪用すると、法的措置につながる可能性があります。潜在的な問題を回避するために、スクレイピング活動が適用されるすべての法律および規制に準拠していることを確認してください。
