a botok leállítása Javascript

gyors összefoglaló

kényelmes módszer a spam leállításához, de ez is elérhetetlen. A Javascript használata a kritikus űrlapattribútumok eltávolításához, az űrlap tartalmának dinamikus betöltése és a Küldés gombok cseréje hatékony alternatíva lehet, amely fenntartja a webhelyek hozzáférhetőségét.

korábban a.net MVC-t használtam a CANAXESS webhely keretrendszereként. A kapcsolatfelvételi űrlapnak elérhetőnek kellett lennie, és nem hagyatkozhatott olyan pluginre, amely hátrányosan befolyásolná a Felhasználó kapcsolatfelvételi képességét. Az űrlapon volt egy CSS rejtett űrlapmező, amely a honeypot technikát és a szerver oldali logikát használta, elutasítva az összes beküldést, ha az űrlapmező adatokat tartalmazott.

az elmélet szerint a botok nem tudják megérteni, hogy mi a legitim mező és mi nem, ezért a bot azonosítja és kitölti az összes beviteli mezőt, és elküldi az űrlapot. Ha a mező adatokat tartalmaz, feltételezzük, hogy mivel a felhasználó nem tudott navigálni a rejtett űrlapmezőbe, a felhasználó nem küldte el az űrlapot, és elveti a teljes bevitelt.

a Honeypot technikákat mindig a spam e-mailek leállításának hatékony módjaként azonosítják, és számomra a technika rendben működött, hogy a spam napi kezelhető szintre csökkenjen. Belül az én mail kliens azt válassza ki az összes spam e-maileket, és törölje őket a tömeg, minden elég egyenesen előre, ha időigényes.

áttérés a Netlify-ra #

a változó infrastruktúra részeként a CANAXESS webhelyet átköltöztették a Netlify-ba, ami azt jelentette, hogy a meglévő spamszűrési technikát át kell gondolni, mivel az előző webhely.Net-be épült és. Net környezetben volt tárolva.

kezdetben úgy döntöttem, hogy nem akarok spam védelmet, csak megnézem, hogyan ment. Ahogy az várható volt, a spam hozzászólás jött vastag és gyors.

honeypot használata #

a Netlify olyan honeypot funkciót biztosít, amely ugyanazt a technikát követi, mint egy rejtett beviteli mező használata, és ha ez ki van töltve, akkor az összes e-mail a spam mappába kerül.

<form name="contactSubmission" data-netlify="true" 
netlify-honeypot="bot-field">
<input class="actual-hidden" name="bot-field" tabindex="-1">

a technika nagyon hatékonyan működött; egyetlen törvényes e-mail sem jutott el a szokásos e-mail mappába.

de a spam mappa más történetet mesélt. Voltak oldalak spam eredmények, ahol korábban tudtam kiválasztani az összes e-mailt a tömeges és törölni, a Netlify megközelítés azt jelentette, csak 10-20 e-maileket küldtek vissza egy időben a lapozás használt, hogy lépjen a következő tíz e-maileket. Nem volt tömeges törlés funkció, és az egyeseket törölni kellett.

ez hihetetlenül időigényes és unalmas volt. Írtam egy Javascript könyvjelzőt, amely reméltem, hogy megkönnyíti az oldal összes jelölőnégyzetének ellenőrzését és az összes rekord törlését.

sajnos az oldal logikája nem ismerte fel, hogy a könyvjelzőm fizikailag kölcsönhatásba lépett az egyes vezérlőkkel, és nem engedélyezte az összes e-mail kiválasztását a tömegben.

azt sem tudtam biztosan, hogy a spam mappában található e – mailek hamis pozitívak-e-helytelenül azonosított e-mailek, ami azt jelentette, hogy az összes e-mailt át kellett vonnom a megerősítéshez.

diszkontálás re #

a Netlify biztosítja a Google re-t, és kezdetben fontolóra vettem annak használatát, mivel az e-mailek naponta növekedtek.

azonban az a felfogás, hogy egy webes akadálymentesítéssel foglalkozó vállalat ismert megközelíthetetlen módszert alkalmaz az emberek számára, hogy kapcsolatba lépjenek velük, nem volt jó megjelenés.

korábban már írtam arról, hogy milyen szörnyű egy technika a weboldal hozzáférhetőségének aláásására, és arra gondoltam, ha nem tudom megoldani ezt a problémát, milyen remény van mások számára.

úgy döntöttem, hogy programozom ki belőle.

hogy az űrlap kevésbé vonzó legyen a botok számára #

szükségem volt arra, hogy a kapcsolatfelvételi űrlap kevésbé nézzen ki, mint egy kapcsolatfelvételi űrlap, és kevésbé vonzó legyen a botok számára. Elkezdtem eltávolítani a method attribútumot a form elemen. Ha nincs method attribútum, úgy gondoltam, hogy az űrlapot nem lehet elküldeni.

<form name="contactSubmission" data-netlify="true" 
netlify-honeypot="bot-field">

sajnos annak ellenére, hogy az attribútumot eltávolították, a Netlify a metódus attribútumot visszahelyezte az űrlapra, amikor a webhelyet telepítették, és ezt nem tudtam ellenőrizni.

<form name="contactSubmission" method="post">

a jQuery használata #

attribútum eltávolításához úgy döntöttem, hogy a Javascript (jQuery) segítségével dinamikusan eltávolítom a method attribútumot az oldal betöltése után. A jQuery ready esemény használatával az űrlapelem ki van választva, és a method attribútum eltávolításra kerül.

$(function(){
$("#contactSubmission").removeAttr("method");
});

ezután szükségem volt egy módra, hogy az attribútumot visszaadjam az űrlap elemhez a küldés előtt. Vissza kellett adnom egy sorrendben, hogy megbizonyosodjak arról, hogy az attribútum létezik-e az űrlap elküldése előtt, különben az űrlap hibásan jelenik meg, és a felhasználó egy törött kapcsolatfelvételi űrlappal találkozik, aligha ideális!

a #

Küldés gomb cseréje ezenkívül úgy döntöttem, hogy eltávolítom a submit gombot is. Ha nem volt submit gomb, az űrlapot nem lehet elküldeni egy fej nélküli böngészőn keresztül (ha a spamküldők ezt a technikát használják), mivel kevésbé hasonlít egy kapcsolatfelvételi űrlapra, inkább beviteli mezők gyűjteményére.

az űrlap benyújtása csak egy szabályos button elemen keresztül történik programozottan.

<input type="button" value="Contact CANAXESS" 
class="contactForm-button submit">

a metódus attribútum hozzáadása a submit #

– nél a normál gombnak volt egy click eseménykezelője, amely hozzáadta a metódus attribútumot és értéket az űrlap elemhez.

amikor rákattint a gombra, az attribútum hozzáadódik, de lehetnek olyan esetek, amikor a szkriptelemek időzítése ellentétes azzal, ahogy szerettem volna.

ennek leküzdésére hozzáadtam egy időzítő intervallumot. Ez ismételten ellenőrzi az űrlapelem method attribútumát 100 ezredmásodpercenként, ha nincs method attribútum, akkor az űrlap nem kerül elküldésre.

$("input.contactForm-button").click(function(){
$("#contactSubmission").attr("method", "post");
var checkExist = setInterval(function(){
var attr = $("#contactSubmission").attr("method");
if (typeof attr !== typeof undefined && attr !== false)
{
$("#contactSubmission").submit();
clearInterval(checkExist);
}
}, 100);
});

az űrlap benyújtása csak akkor történik meg, ha a method attribútum létezik, és ez programozottan történik. Amikor az űrlapot benyújtották, az intervallum időzítő véget ér.

clearInterval(checkExist);

azt hittem, hogy ez egy nagyon hatékony módszer a kapcsolatfelvételi űrlap megtervezésére a botok leállítására, de a bizalmam nem tartott sokáig. Néhány órával később visszajöttem, hogy újra megtaláljam a spam e-maileket.

az űrlap benyújtása a HTTP #

segítségével történik, majd eszembe jutott, a botok valószínűleg nem is látogatják meg az oldalt a böngészőn keresztül, nem törődnek az összes jQuery szkripttel, amely az ügyféloldalon fut elemek eltávolítása.

a metódus attribútum az oldal betöltésekor létezik, és onnan egyszerűen lekaparja a HTML-t és elküldi az űrlapot egy HTTP-bejegyzésen keresztül anélkül, hogy valaha is kapcsolatba lépne az oldallal.

és ez volt az a felismerés, amely aztán arra késztetett, hogy azonosítsam azt a technikát, amely nem csak lelassítja a spam e-maileket, hanem megállítja őket. A technika alkalmazása óta nem kaptam e-maileket, egyik sem, zilch.

az oldal elválasztása a #

űrlaptól a technika az űrlaprészlet Javascript segítségével történő betöltése az oldal betöltése után. Felismerve spam botok valószínűleg nem használ egy fej nélküli böngésző navigálni a kapcsolat oldalon, majd küldje el az űrlapot I ehelyett tette az űrlapot csak akkor jelenik meg, ha az oldal betöltődött a böngésző.

a böngészőben megjelenített kapcsolattartó oldal egy oldal, de valójában két részből áll. A Főoldal Az űrlapösszetevő és maga az űrlaptartalom helyőrzőjével.

<div></div>

az űrlap betöltése az oldal betöltése #

az oldal betöltésekor a jQuery ready esemény szinte azonnal betölti a további űrlaprészletet az űrlaptartályba DIV.

az űrlaptöredék oldalt soha nem azonosítja egy bot, mivel a bot által látott kezdőoldalnak nincs űrlapeleme, ez csak akkor töltődik be, ha az oldal betöltődött a Javascript segítségével.

<script>
$(function(){
$("#formContainer").load("formfragment.html");
});
</script>

összefoglalva #

a technika működéséhez Javascript szükséges. Mivel a Javascript a webfejlesztés elfogadott részévé vált, úgy gondolom, hogy reális megoldás a spam leállítására Bizonyos konkrét helyzetekben.

a honeypot mezők használatának másik technikája mindig problematikus, mivel tapasztalataim szerint nem volt olyan hatékony.

a Spam még mindig megtalálja az utat, és ha őszinte vagyok, a honeypot technika csak spam limiterként osztályozható, csökkentve a spam átjutását.

bár a használat hatékony és gyors megoldás lenne, használata aláássa a web hozzáférhetővé tételét a fogyatékkal élők számára.

azáltal, hogy eltávolítja a kapcsolatfelvételi űrlapot a szokásos HTTP get kérés részeként, úgy tűnik, hogy a botok láthatósága jelentősen csökken, ezért csökkenti (és az én esetemben leállt) a botok számára a spam küldését a kapcsolatfelvételi űrlapon keresztül.

kipróbálható dolgok #

a webhely által használt keretrendszertől függetlenül, ha a kapcsolatfelvételi űrlapot spam veszélyezteti, próbálja ki ezeket a megközelítéseket:

  • válassza szét az oldalt és az űrlapot
  • töltse be az űrlapot, miután az oldal betöltődött
  • csak az űrlapokat küldje el programozottan a button elemek használatával
  • távolítsa el a method attribútumot az űrlapokon, és adja hozzá őket az űrlap benyújtásának részeként

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.