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);
})();
クリックポストの支払いで使用していますが、理論上は他のシステム経由でも動くとおもいます。