1. ホーム
  2. javascript

[解決済み] javascriptでボタンのクリックをシミュレートできますか?

2022-03-06 17:46:30

質問

マクロを自由に動かせると困るようなサイトをデザインしています。

ボタンをクリックしたときのHTTPリクエストをシミュレートして作られたマクロを止める方法を考えましたが、ボタンをクリックするだけで通常のユーザーと同じように操作できるjavascriptスクリプトを挿入することができれば、それも無駄になってしまいます。

ボタンクリックをシミュレートするというのは、ボタンが押され、ボタンがあるフォームがそれに関連するphpコードとともに実行されるという意味です。

論理的にはjavascriptで可能だと思うのですが、確実に知りたいのです。

~アンドリュー

解決方法は?

ボタンは常にプログラムによってクリックされる場合があります。例えば、このようなフォームを持つページがあるとします。

<form>
    <input type="text" />
    <button>Do something</button>
    <input type="submit">
</form>

と入力すれば、デバッグコンソールを開いて

document.getElementsByTagName('button')[0].click();

をクリックする、または

document.getElementsByTagName('input')[1].click();

で、フォームの送信ボタンをクリックするか、あるいは単に

document.forms[0].submit();

をクリックすると、ボタンをクリックせずにフォームを送信することができます。

クライアント側でユーザがJavaScriptのコードを使いこなすのを防ぐ方法はありません。サーバー側で何らかのバリデーションを追加して、望ましくないユーザーの行動を防ぐ必要があります。