質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

1回答

3636閲覧

SeleniumでアクセスしたサイトにSeleniumを使っていることを隠したい

hiro_a

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

1グッド

1クリップ

投稿2023/01/22 09:37

前提

Excel(VBA)+Selenuimでスクレイピングのツールを作っていますが、手動でChromeを起動してアクセスした際には正常に表示されるのですが、Seleniumから呼び出したChromeだとアクセスが弾かれてしまいます。

Seleniumなどを使うと、サーバー側からツールを使ったアクセスだと識別する方法があるらしいのですが、それを隠蔽する方法はありますでしょうか?

hiiragi9👏を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2023/01/22 11:57

> Seleniumから呼び出したChromeだとアクセスが弾かれてしまいます。 「Seleniumから呼び出したChrome」が「アクセスが弾かれ」る原因というのは、どうやって特定されたのでしょうか? コードを掲載いただくことは可能でしょうか?
hiro_a

2023/01/22 13:20

コメントありがとうございます。 以前はこのままでも使えていたのですが、サイトがアタックを喰らったみたいで チェックが入るようになったようです。 明示的にアクセス拒否されるわけではありませんが、以下のメッセージが出てきて、永久ループしてしまいます。 Checking if the site connection is secure This check is taking longer than expected. Check your Internet connection and refresh the page if the issue persists. 手動でChromeでアクセスした場合は問題なく表示されます。 SeleniumからChromeを起動した場合は上記のような事象になります。 コードの抜粋です。 URLは伏せてあります。 ----- 以下コード ----- Dim DRIVER As New Selenium.WebDriver Dim strURL As String strURL = "https://****************************************" DRIVER.Start "chrome" DRIVER.Get strURL
kikukiku

2023/01/23 04:28

サーバ側にSeleniumのアクセスを許さない仕組みが入っているのであるならば スクレイピングそのものを禁止している可能性が高いと思います。 利用規約を確認する必要があると感じました。
meg_

2023/01/23 10:23

URLが不明なので回答者側で検証不可能ですね。ただアクセス拒否されると切断されることが多いと思うので「永久ループしてしまいます」という現象には出会ったことがないですね。
hiro_a

2023/01/23 13:51

コメントありがとうございます。 永久ループは同じURLにリダイレクトして、クライアントの環境チェックを繰り返しているようです。 URLは後悔しない方がいいかなと思っていたのですが、以下のURLです。 https://hidemy.name/en/proxy-list/?type=45#list 海外のSOCKプロキシの一覧を公開しているサイトで、ここからSOCKSプロキシの一覧を取得して、他のデータ収集に使っていました。 もし、お時間あれば、私の自称認識が正しいかどうかをテストしていただけるとありがたいです。
guest

回答1

0

Seleniumを起動して、Webサイトを開いた際にSelenium上で以下のようなスクリプトを実行してみてはいかがでしょうか。

navigator.__proto__でプロパティ取得後、delete 関数でプロパティからwebdriverを削除、
再度navigator.__proto__ = でプロパティを上書きしたのちに、実行をすることでWebDriver出ないとサイト上では判定されます。
(別途マウスカーソルの追従でのサイトスプレイピング禁止の機構が組まれていることに関しては、ここでは考えないことにします。)

一応以下のコードでwebdriverが使用されているかは確認できますので、ローカル等で確認してみてはいかがでしょうか。
if (navigator.webdriver) // webdriverの場合はTRUE

投稿2023/01/26 03:31

y-_

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y-_

2023/01/26 03:33

追記ですが、今回の「SeleniumでアクセスしたサイトにSeleniumを使っていることを隠したい」というものに関しては、こちらで対応できるかと思います。 実際のサイトで、別の対策が取られている場合に関しては(リダイレクト、CF等)そもそも対応できない場合があります。
hiro_a

2023/01/28 04:18 編集

コメントありがとうございます。 多分、これが自分がやりたかった事にヒットしていると思われるのですが、Pythonなどではサンプルコードが検索で引っかかってくるのですが、VBAでのサンプルコードを見つけられませんでした。 実際にどういうコーディングをすればいいのかが、初心者のためわかりません。 お手数ですが、サンプルコードをつけていただけないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問