某スワロフスキーのアフィリエイトの会社が
問い合わせで
って、定期的にお問い合わせからメッセージ送ってきます
もう何年もです
マジうざい、、、
Googleフォーム使っているから見に行くまで誰だかわからないんですよね
で、見に行って即削除の繰り返し
登山ブログで
スワロフスキーのアフィ
やるわけないだろ!!
チェックボックス作ってみたんですが意味なし
人間が送ってきているのか、、、
スパムボット対策
人間が送ってきているとしたら、、、
Googleフォームでは防ぎようがないんですが、、、
※アドレスや特定の言葉を指定してブロックしたりできないから
定期的に定型文を送ってくる
しかも、こんな弱小ブログ&登山ブログ(スワロフスキーと無関係すぎる)に送ってきているのでボットの可能性が非常に高い
AIに聞いてみると
だって!!
ボットを認識して
送信できなくするコードを作ってもらいました
ハニーポットとはCSSで人間には見えないように隠した入力フィールドのことです。ボットはページを解析してすべてのフィールドに自動入力するため、この隠しフィールドにも値を入れてしまいます。送信時にそのフィールドに値が入っていたらボットと判定して送信をブロックします。
語源:ハニーポット(honeypot)は「蜂蜜の壺」という意味で、蜂蜜の甘い香りに虫がおびき寄せられるように、攻撃者やボットをわざと罠に引き寄せて検知・ブロックするという概念からきています。もともとはサイバーセキュリティの世界でハッカーをおびき寄せるおとりのシステムやサーバーのことを指していましたが、フォームのスパム対策にも同じ考え方で使われるようになりました。
出典:Claude(Anthropic)
ハニーポットコード
<p style="text-align: center;">コメント欄に書けない事(プライベートな事を含む)</p>
<p style="text-align: center;">ご指摘、お問い合わせ等がありましたら</p>
<p style="text-align: center;">こちらのメールフォームから送ってください</p>
<p style="text-align: center;">※このメールフォームはGoogleフォームを利用しております</p>
<form action="https://docs.google.com/forms/d/e/××××××××××××××××××××××××××××××××××××××××××××××××××/formResponse" id="form">
<div class="label">お名前</div>
<input id="name" name="entry.××××××××" required type="text">
<div class="label">メールアドレス</div>
<input id="email" name="entry.××××××××" placeholder="E-mail" required type="text">
<div class="label">お問い合わせ内容</div>
<textarea id="msg" name="entry.××××××××" required></textarea>
<div class="spam-check-box">
<label>
<input id="human-check" name="entry.××××××××" type="checkbox" value="スパムチェック">
<span>私は真っ当な人間だとは言い切れませんが、たぶんまともな方です</span>
</label>
<div id="check-error">まともな人しか送信できません</div>
</div>
<!-- ハニーポット -->
<input aria-hidden="true" autocomplete="off" id="honey" name="honey" tabindex="-1" type="text">
<input aria-hidden="true" autocomplete="off" id="website" name="website" tabindex="-1" type="text">
<div style="text-align:center;">
<input id="button" type="submit" value="送信">
</div>
</form>
<script>
const form = document.getElementById('form');
const startTime = Date.now();
form.addEventListener('submit', function(e) {
const error = document.getElementById('check-error');
// ハニーポット1
if (document.getElementById('honey').value.trim() !== '') {
e.preventDefault();
return;
}
// ハニーポット2
if (document.getElementById('website').value.trim() !== '') {
e.preventDefault();
return;
}
// 3秒以内送信防止
if (Date.now() - startTime < 3000) {
e.preventDefault();
return;
}
// チェックボックス確認
if (!document.getElementById('human-check').checked) {
e.preventDefault();
error.style.display = 'block';
return;
}
error.style.display = 'none';
});
</script>
<style>
.label {
font-weight: bold;
padding: 1em 0 5px;
}
#form ::placeholder {
color: #ccc;
}
.spam-check-box {
margin: 1.5em 0;
padding: 10px;
background: #444;
border-radius: 3px;
}
.spam-check-box label {
display: flex;
align-items: center;
cursor: pointer;
color: #fff;
}
.spam-check-box input[type="checkbox"] {
width: 18px;
height: 18px;
margin-right: 10px;
cursor: pointer;
}
#check-error {
display: none;
color: #ff6666;
font-size: 0.9em;
margin-top: 8px;
padding-left: 5px;
}
#button {
border: none;
border-radius: 3px;
font-size: 1.2em;
padding: .3em 2em;
margin-top: 2em;
background: #ff0000;
color: #fff;
transition: .3s;
}
#button:hover {
box-shadow: 1px 1px 10px #fff;
cursor: pointer;
}
#button:active {
box-shadow: none;
}
#name,
#email,
#msg {
box-sizing: border-box;
padding: .5em;
border: none;
border-radius: 3px;
color: #f5f5f5;
background: #555;
font-size: 1em;
max-width: 100%;
width: 100%;
}
#msg {
min-height: 200px;
min-width: 100%;
}
/* ハニーポット */
#honey,
#website {
display: none !important;
position: absolute;
left: -9999px;
opacity: 0;
}
</style>
これがウチのお問い合わせコードです
Googleフォームでお問い合わせを作っている方はこれ使えます
文言とかは好きな物に
formResponseのURL → ××××
各フィールドのentry.数字 → entry.××××××××
××の部分を自分のGoogleフォームの値に差し替えてください
以下、Claudeからの説明です
今回追加した対策は3つです。
① ハニーポットを2つ設置
CSSで人間には見えないように隠した入力フィールドのことをハニーポットと言います。ボットはページを解析してすべてのフィールドに自動入力するため、この隠しフィールドにも値を入れてしまいます。特に
name="website"というフィールド名はボットが「URLを入れるべきフィールド」と判断して入力しやすいため、ハニーポットとして効果的です。<input type="text" id="honey" name="honey" tabindex="-1" autocomplete="off" aria-hidden="true"> <input type="text" id="website" name="website" tabindex="-1" autocomplete="off" aria-hidden="true">
② 3秒以内の送信をブロック
ページを開いてから3秒以内に送信されたらボットと判定してブロックします。人間が名前・メールアドレス・お問い合わせ内容を入力するのに3秒以内はあり得ないためです。
JavaScript:ハニーポット判定+3秒チェック
// ハニーポット1 if (document.getElementById('honey').value.trim() !== '') { e.preventDefault(); return; } // ハニーポット2 if (document.getElementById('website').value.trim() !== '') { e.preventDefault(); return; } // 3秒以内送信防止 if (Date.now() - startTime < 3000) { e.preventDefault(); return; }
CSS:ハニーポットを完全非表示に
#honey, #website { display: none !important; position: absolute; left: -9999px; opacity: 0; }なお、人間が手動で送信してくる場合はこの対策では防げません。また、JavaScriptを無視してエンドポイントを直接叩いてくる高度なボットにも効果はありません。あくまで一般的なスパムボット対策としてお試しください。
出典:Claude(Anthropic)
Googleフォームをカスタマイズ | ふじろじっく
Googleフォームのデザインをカスタマイズしてみた
Claude
今回はClaudeに作ってもらいました
コードとかに強い感じですね
更に念の為にと思いChatGPTにコードチェックしてもらうと、これでは駄目と強化版を作ってくれ、、、
更にそれをClaudeにチェックしてもらうと
私が作ったやつより強化されてますね。
って事でした
AIをふたつ使ってチェックさせるのは結構やります
ひとつのAIだけではなく、別のAIにチェックさせるとまた違う視点、考えをだしてくれるので良い感じですよ
素人がコードなんて書けないのでAIは本当に便利
Bloggerは無料、強制広告なし、カスタマイズができると非常に良いブログサービスなんですが、HTMLの編集ができない、、、って諦めている人も多いと思うんですよね
自分みたいな素人がBloggerでブログ運営できているのでAIを活用すれば誰でもBloggerを使えると思うんですけどね。。。
日本でももっとメジャーな存在になってコミュニティとかできたらいいのに。。。
今回の対策がどこまで通用するのか、、、
とりあえずどうなるか見てみたいと思います。。。
スワロフスキーの会社のサイトからメールで迷惑だ!!って言おうかと一瞬思ったんですが、こんな事している会社がまともな対応する筈がないのでやめました
変にサイトにアクセスしてウィルス感染とかも考えられない事もないから。。。
※ChatGPT作
ZEROからF-lightへBloggerテーマ変更 | Trekking from Kochi
BloggerのテーマをZEROからF-liteへ変更、カスタマイズの記事もここにまとめてます
その他、Bloggerカスタマイズはこちらにまとめてます


コメントを投稿