|
851 | 851 | var emailSubjectInput = document.getElementById('share-email-subject'); |
852 | 852 | var emailSendBtn = document.getElementById('share-email-send'); |
853 | 853 | var emailStatus = document.getElementById('share-email-status'); |
| 854 | + var emailHoneypot = document.getElementById('share-email-website'); |
| 855 | + var emailModalOpenTime = 0; |
854 | 856 |
|
855 | 857 | // Restore last-used email |
856 | 858 | var savedEmail = localStorage.getItem(M.KEYS.EMAIL_SELF); |
857 | 859 | if (savedEmail && emailInput) emailInput.value = savedEmail; |
858 | 860 |
|
859 | | - |
860 | | - |
| 861 | + // Track when the share result modal opens (for time-based bot detection) |
| 862 | + var _origShowShareResult = showShareResult; |
| 863 | + showShareResult = function (url, isSecure) { |
| 864 | + _origShowShareResult(url, isSecure); |
| 865 | + emailModalOpenTime = Date.now(); |
| 866 | + }; |
861 | 867 | if (emailSendBtn) emailSendBtn.addEventListener('click', async function () { |
862 | 868 | var email = emailInput.value.trim(); |
863 | 869 | if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { |
|
867 | 873 | return; |
868 | 874 | } |
869 | 875 |
|
| 876 | + // Anti-bot: honeypot check (hidden field bots auto-fill) |
| 877 | + if (emailHoneypot && emailHoneypot.value) return; |
870 | 878 |
|
871 | | - |
| 879 | + // Anti-bot: time check (reject submissions < 3 seconds after modal opened) |
| 880 | + var elapsed = Date.now() - emailModalOpenTime; |
| 881 | + if (elapsed < 3000) return; |
872 | 882 | // Persist email for next time |
873 | 883 | try { localStorage.setItem(M.KEYS.EMAIL_SELF, email); } catch (e) { /* ignore */ } |
874 | 884 |
|
|
903 | 913 | subject: subject, |
904 | 914 | title: heading, |
905 | 915 | content: content, |
906 | | - shareLink: shareUrl |
| 916 | + shareLink: shareUrl, |
| 917 | + hp: emailHoneypot ? emailHoneypot.value : '', |
| 918 | + ts: elapsed |
907 | 919 | }) |
908 | 920 | }); |
909 | 921 | // If fetch didn't throw, the request reached Google's servers |
|
0 commit comments