更新:「Amazon Pay」の支払手続きをTampermonkeyで自動承認するスクリプト

AmazonPayの承認画面が変更になり、従来のスクリプトでは動かなくなりました。
通常のフォームタグではなく、疑似要素を使用したものになり、時間差で内容が更新されるなど、よくわからない仕様になっています。
いろいろ眺めていたのですが、埒が明かなかったのでAIに丸投げしました。
以下のコードで承認を自動化できます。

// ==UserScript==
// @name         クリックポスト(AmazonPay):step2:決済(AmazonPay側)
// @namespace    http://tampermonkey.net/
// @version      2026-05-30
// @description  「続行」テキストの外側にあるrole="button"を自動でクリックします
// @author       You
// @match        https://*.amazon.co.jp/checkout/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    // クリック処理を実行する関数
    function tryClickContinue() {
        // 画面上のすべての role="button" を取得
        const buttons = document.querySelectorAll('[role="button"]');

        for (const button of buttons) {
            // ボタンのテキスト、または子要素のテキストに「続行」が含まれているか確認
            if (button.textContent && button.textContent.includes('続行')) {
                // すでに非表示、または無効化されている場合はスキップ
                if (button.offsetWidth === 0 || button.offsetHeight === 0) continue;

                console.log('「続行」ボタンを検出しました。クリックイベントを発火します。', button);

                // クリックイベントの生成と発火(React等のフレームワークによる制御に対応するためバブリングを有効化)
                const clickEvent = new MouseEvent('click', {
                    bubbles: true,
                    cancelable: true,
                    view: window
                });
                button.dispatchEvent(clickEvent);

                // 1度実行したらこの周期のループは抜ける(必要に応じて監視を止める場合は observer.disconnect() を実行)
                break;
            }
        }
    }

    // Next.jsなどのダイナミックレンダリングに対応するため、定期的にDOMを確認
    const intervalId = setInterval(() => {
        tryClickContinue();
    }, 500); // 0.5秒ごとにチェック

    // ページ遷移等で無限に動き続けるのを防ぐため、一定時間(例: 30秒)で監視をクリアすることも可能
    setTimeout(() => {
        clearInterval(intervalId);
    }, 30000);
})();

クリックポストの支払いで使用していますが、理論上は他のシステム経由でも動くとおもいます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です