
前提
googleの検索結果をスクレイピングするクローラーをpythonで造っています。しかし、いくつか処理を施してはいるものの、これまで大量にスクレイピングをしたせいか、GoogleにBOTであるとバレてしまい、recaptchaに飛ばされます。バレないようにスクレイピングしたいです。
Googleがどのようにユーザーとクローラーを判別しているのか、ご教示いただきたいです。
実現したいこと
recaptchaを表示させないようにしつつ、スクレイピングすることです。
発生している問題・エラーメッセージ
上記のページに飛ばされてしまいます。(クリックするとリンク切れになっていますが、アドレスバーに貼り付けるとrecaptchaのページに到達できます)
該当のソースコード
python
1from selenium.webdriver.chrome.options import Options 2#botだとバレないようにするためのオプションを用意する 3option = Options() 4# シークレットモードの設定を付与 5option.add_argument('--incognito') 6#window.navigator_webdriverの設定をfalseに偽装する 7option.add_argument('--disable-blink-features=AutomationControlled') 8 9 10from selenium import webdriver 11#ウェブドライバーのパス。今回はChrome(自分のドライバーのパス) 12driver_path = "C:\mypg\py\chromedriver.exe" 13driver = webdriver.Chrome(executable_path=driver_path, options=option) 14#ウィンドウ最大化と待ち時間の設定 15driver.maximize_window() 16import time 17INTERVAL = 3.0 18time.sleep(INTERVAL) 19 20URL = "https://www.google.com/" 21driver.get(URL) 22time.sleep(INTERVAL) 23 24#検索窓に入力して調べる 25search = driver.find_element_by_name('q') 26search.send_keys('ぐーぐる') 27search.submit() 28 29#クロームの画面が消えてしまわないように残す用 30input()
試したこと
ソースコードにもありますが、window.navigator_webdriverの値がtrueであることで、クローラーであると判断される事例があったので、window.navigator_webdriverの値をfalseにするよう設定しました。
また、VPNを使ってIPアドレスを変えた場合はうまくいったのですが、毎回同じアドレスでスクレイピングしたいです。
補足情報(FW/ツールのバージョンなど)
OSはWindows11、pythonのバージョンは3.10.7です。
スクレイピングを始めたころは、特に問題なく情報を抜けていたのですが、続けていくうちにrecaptchaの画面に遭遇する頻度が高くなっていき、ついには検索窓にキーワードを入力して検索することすらできなくなってしまいました。
自分で検索するときは何の問題もなく使えているので、どのようにBOTと人を見分けているのか、本当に謎です....。
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー