Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Javascript emailspoof

3 views
Skip to first unread message

Rune Jensen

unread,
Jan 1, 2013, 5:04:08 AM1/1/13
to
Jeg er nu kommet til javascript-delen af min emailspoof (som er ændret
lidt i strategien siden sidst).

Grundlæggende gør jeg det nu, at jeg serverside indsætter et
tilfældigt tegn i emailadresser i alle mailto: for hvert andet tegn.

F.eks. vil

<a href="mailto:a...@b.com">

blive til noget a la

<a href="mailto:a...@hbj.7clorm">

i HTMLen... og det er i hvert fald ikke brugbart for botter.

Nu skal jeg med javascript så fjerne hvert andet tegn igen, så alle
mailto: adresser igen bliver brugbare.

Jeg har følgende kode, som _virkelig_ har taget mig tid at sætte
sammen - dog med god hjælp fra gruppen her:

--------------------------------------------------

// genneløbe alle links med mailto:
function findLinks() {
var a = document.getElementsByTagName("a");
var al = a.length;
for ( var i=0; i < al; i++){
if ( a[i].href.indexOf( 'mailto:') >-1) {
// alert( 'mailto=' + a[i].href);
a[i].href = clearText( a[i].href);
// alert;
}
}
}

// Skal returnere læsbar nuværende mailadresse
function clearText( str) {
var f=2; // factor for at fjerne hvert f'ne tegn
var s = '';
var sl = str.length;
var addr = str.substring(7, sl); // springe over mailto:
var al = addr.length
for ( var i=0; i<al; i=++){
// notice int!
if i/f != int(i/f) {
s += addr.substring(i,1)
}
}
// alert ( addr);
return s;
}

-----------------------------------------------------

Mit første spørgsmål går på, at jeg ikke får godkendt int (for
integer). Hvad pokker hedder heltalsfunktionen i javascript?

Flere spørgsmål kommer jeg til, når jeg har fået ovenstående til at
virke - der er nemlig en hel del mere :)


MVH
Rune Jensen

J�rn Andersen

unread,
Jan 1, 2013, 5:12:08 AM1/1/13
to
On Tue, 1 Jan 2013 02:04:08 -0800 (PST), Rune Jensen
<runeof...@gmail.com> wrote:

>Mit f�rste sp�rgsm�l g�r p�, at jeg ikke f�r godkendt int (for
>integer). Hvad pokker hedder heltalsfunktionen i javascript?

http://stackoverflow.com/questions/3885817/how-to-check-if-a-number-is-float-or-integer

Mvh. J�rn

--
J�rn Andersen
http://socialister.dk
http://marxisme.dk

Birger Sørensen

unread,
Jan 1, 2013, 6:17:35 AM1/1/13
to
Rune Jensen forklarede den 1/1/2013:

> Mit fᅵrste spᅵrgsmᅵl gᅵr pᅵ, at jeg ikke fᅵr godkendt int (for
> integer). Hvad pokker hedder heltalsfunktionen i javascript?

if i/f != int(i/f) {
skal formentlig vᅵre
if (i/f != parseInt(i/f)) {
eller
if (((i/f) % 1) !== 0) {

Man kan undlade ; efter statements. Det er en rigtig skidt ide.
Parseren sᅵtter sᅵ selv et - men er ikke altid lige god til at finde
det rigtige sted.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sᅵdant skulle vᅵre


Rune Jensen

unread,
Jan 5, 2013, 4:35:48 AM1/5/13
to
On 1 Jan., 12:17, Birger Sørensen <s...@bbsorensen.com> wrote:
> Rune Jensen forklarede den 1/1/2013:
>
> > Mit f rste sp rgsm l g r p , at jeg ikke f r godkendt int (for
> > integer). Hvad pokker hedder heltalsfunktionen i javascript?
>
> if i/f != int(i/f) {
> skal formentlig v re
> if (i/f != parseInt(i/f)) {
> eller
> if (((i/f) % 1) !== 0) {
>
> Man kan undlade ; efter statements. Det er en rigtig skidt ide.
> Parseren s tter s selv et - men er ikke altid lige god til at finde
> det rigtige sted.

Jeg kan sige, efter at have moslet meget længe, at det er MEGET
vigtigt, man sætter ; efter hver linje, ellers giver det fuldstændigt
tilfældigt resultat eller virker slet ikke.

Og så skal man bruge alert() til at finde bugs med, det er også en god
ting at huske.

Derudover, så har jeg foreløbigt måttet lægge det til sidst i koden,
for at være sikker på, at alle a-er er indlæst, før de opdateres.

Jeg har nu følgende kode:

<script charset="ISO-8859-1" type="text/javascript">
findlinks();
function findlinks(){
var a;
a = document.getElementsByTagName("a");
var i;
var ah;
for (i=a.length-1; i >0; i--){
ah = a[i].href
if (ah.indexOf( 'mailto:') ===0 && ah.indexOf( '.invalid') ===
(ah.length-8)){
// alert(ah.indexOf( '.invalid'))
a[i].href = clearText(ah);
}
}
}

function clearText( str) {
var f=3;
var i;
var s = '';
var l = str.length;
var addr = str.substring(7, l-8);
// alert(addr);
var al = addr.length;
for (i=0; i <=al; i++){
if ((i/f) !== parseInt(i/f)) {
// s += ( str.charCodeAt( i) );
s += ( String.fromCharCode(addr.charCodeAt( i)));
// alert(s);
// s += (addr.substring(i,1); // virker ikke???
// s += (addr.substring(2,2);
// s = '';
// s = addr.substring(5,5)
}
}
return s;
}
</script>

...det virker, MEN... det bruger ikke substring, men en dobbelt
konvertering af nuværende karakter, og det virker ikke optimalt.

Hvorfor vil substring ikke virke? Det lægger ikke enkeltkaraskterer
sammen, mere store dele af strengen, og den samme del flere gange, så
jeg f.eks. får flere @ og det dur ikke.


MVH
Rune Jensen

Birger Sørensen

unread,
Jan 5, 2013, 5:30:43 AM1/5/13
to
Efter mange tanker skrev Rune Jensen:
> Hvorfor vil substring ikke virke? Det lægger ikke enkeltkaraskterer
> sammen, mere store dele af strengen, og den samme del flere gange, så
> jeg f.eks. får flere @ og det dur ikke.

Jeg har lidt travlt, så det bliver kort..
Der er to funktioner; substring og substr.
Den ene tager start og længde, den anden start og slut.
Du kan også bruge addr[x] for at få x'e karakter i strengen (hvilket
ser ud til at være hvad du forsøger).

Ellers se
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String
der kan du finde beskrivelser af funktionerne, og mange eksempler.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være


Rune Jensen

unread,
Jan 5, 2013, 5:38:24 AM1/5/13
to
On 5 Jan., 11:30, Birger Sørensen <s...@bbsorensen.com> wrote:

> Du kan også bruge addr[x] for at få x'e karakter i strengen (hvilket
> ser ud til at være hvad du forsøger).

Ja, og jeg vil hellere, hvis der er en indbygget funktion til det. Nu
har jeg læst om både substring, substr og slice, og de lader til at
have en del inkonsistens særligt i IE, men også at kunne mere end
nødvendigt...

Så jeg prøver med addr

Tak for hjælpen Birger... foreløbig :)


MVH
Rune Jensen

Rune Jensen

unread,
Jan 5, 2013, 5:53:56 AM1/5/13
to
On 5 Jan., 11:30, Birger Sørensen <s...@bbsorensen.com> wrote:

> Du kan også bruge addr[x] for at få x'e karakter i strengen (hvilket
> ser ud til at være hvad du forsøger).

Det virker med charAt

Det virker også med addr[i], men giver en undefined i enden, sikkert
fordi i går ud over bound.

Hvilken metode er bedst? De lader til at gøre det samme, bare med
forskelligt index.


MVH
Rune Jensen

Birger Sørensen

unread,
Jan 5, 2013, 12:26:05 PM1/5/13
to
Rune Jensen kom med denne ide:
> On 5 Jan., 11:30, Birger Sᅵrensen <s...@bbsorensen.com> wrote:
>
>> Du kan ogsᅵ bruge addr[x] for at fᅵ x'e karakter i strengen (hvilket
>> ser ud til at vᅵre hvad du forsᅵger).
>
> Det virker med charAt
>
> Det virker ogsᅵ med addr[i], men giver en undefined i enden, sikkert
> fordi i gᅵr ud over bound.
>
> Hvilken metode er bedst? De lader til at gᅵre det samme, bare med
> forskelligt index.
>
>
> MVH
> Rune Jensen

charAt() er en funktion, mens addr[] benytter sig af, at en streng er
et array af karakterer.
Sᅵ om den ene eller den anden er bedst, er ikke til at sige - det vil
sᅵ afhᅵnge af anvendelsen.
Der stᅵr ikke noget, men eksemplet for charAt() indikerer at hvis
indeks er efter strengens afslutning, returneres en tom streng, men et
ulovligt index i et array vil give en fejl.
Sᅵ umiddelbart skal du anvende charAt(), eller foretage checket pᅵ
index selv. Og jeg ville nok fortrᅵkke det fᅵrste, hvis min
kode/funktion kan tolerere den tomme streng.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/

Rune Jensen

unread,
Jan 7, 2013, 10:46:28 AM1/7/13
to
On 5 Jan., 18:26, Birger Sørensen <s...@bbsorensen.com> wrote:

> charAt() er en funktion, mens addr[] benytter sig af, at en streng er
> et array af karakterer.

Så er addr[] nok hurtigere, for funktioner har vel en del overhead.

> S umiddelbart skal du anvende charAt(), eller foretage checket p
> index selv. Og jeg ville nok fortr kke det f rste, hvis min
> kode/funktion kan tolerere den tomme streng.

Det gør (foreløbig) ikke så meget nu, om det er det ene eller det
andet, for nu forstår jeg hvad de gør og hvordan de virker, og hvad
der kan gå galt, så kan jeg bare skifte imellem dem.

Foreløbig har jeg brugt indexet, da jeg tror det er hurtigere (og
fordi jeg foreløbig godt kan styre indexets bound). Men CharAt er en
god ting at huske, og jeg vil også huske, dine advarsler.


MVH
Rune Jensen
0 new messages