Outlook: Tracking the Tracker
#1
Hallo,

auf Webseiten ist das meist genutzte Tool zum Tracker der User Javascript. Da aktive Inhalte aber i.d.R. von Mail-Clients geblockt werden, bleibt für EMail-Tracking nur html und CSS.

Analog zum bekannten "Facebook-Pixel" kann ein Image in der html-Code mit einem Parameter eingefügt werden. Mit "#" als Tags wäre das

#img src="
Dateiupload bitte im Forum! So geht es: Klick mich!
den User eindeutige ID]#

Beim Rendern wird, auch wenn das Bild nicht angezeigt wird, die URL mit dem Parameter aufgerufen und kann damit auf dem Server ge-logged werden.

Ähnlich geht dies auch mit CSS:

Konditionelle Abfragen mit

@media
@container
@import
iframe

ermöglichen es einige Daten zur Hardware in Erfahrung zu bringen, z.B.

@media only screen and (max-width: 580px)

würde nur auf einen Mobil-Gerät ausgeführt.

Der folgende Code versucht für die ausgewählte Email Tracker zu suchen:

Code:
Private Sub T_EML_CSS_style_mit_http_img()
Dim EML As MailItem

Set EML = ActiveExplorer.Selection(1)

Call CSS_style_mit_http(EML)

End Sub

Private Sub CSS_style_mit_http(ByVal EML As MailItem)
'durchsucht alle <style und jeweils URL's
'<img ...>

'Dim FLD As Folder, EML As MailItem,
Dim Su, s, Tx As String, DOM, i As Integer, pos As Long, p1 As Long, Bo As Boolean, RR As Object, r

If RegEx Is Nothing Then Set RegEx = CreateObject("VBScript.RegExp")

Su = Array("@media", "@container", "@import", "iframe")

'Sender
Debug.Print EML.Sender, EML.SenderEmailAddress & vbLf
Debug.Print "Anzahl </style>", (Len(EML.HTMLBody) - Len(Replace(EML.HTMLBody, "</style>", ""))) / 8 & vbLf

'Keywords
For Each s In Su
    RegEx.Pattern = s
    Set RR = RegEx.Execute(EML.HTMLBody)
    Debug.Print s, RR.Count
Next s
Debug.Print

pos = 0
RegEx.Pattern = "http[:/\.\w\d]+"
Do
    pos = InStr(pos + 1, EML.HTMLBody, "<style")
    If pos = 0 Then Exit Do
    p1 = InStr(pos, EML.HTMLBody, "</style>")
    Tx = Mid(EML.HTMLBody, pos, p1 - pos + 8)
    'If InStr(1, Tx, "http") Then Debug.Print "http" 'Tx
    Set RR = RegEx.Execute(Tx)
    For r = 0 To RR.Count - 1
        If Not (InStr(1, Tx, "w3.org") > 0 Or InStr(1, Tx, "microsoft.com") > 0 Or InStr(1, Tx, DOM) > 0 Or InStr(1, Tx, "IE=edge") > 0) Then
            Debug.Print r, RR(r)
        End If
    Next r
Loop
Debug.Print

'images
RegEx.Pattern = "<img.+?>"
Set RR = RegEx.Execute(EML.HTMLBody)
For r = 0 To RR.Count - 1
    Debug.Print RR(r)
Next r

'URL's
RegEx.Pattern = "http[:/\.\-\w\d]+"

DOM = Split(EML.SenderEmailAddress, "@")(1)
DOM = Split(DOM, ".")
DOM = DOM(UBound(DOM) - 1) & "." & DOM(UBound(DOM))
Debug.Print vbLf & "Domain", DOM

Set RR = RegEx.Execute(EML.HTMLBody)
For r = 0 To RR.Count - 1
    If InStr(1, RR(r), DOM) = 0 Then
        If InStr(1, RR(r), "w3.org") > 0 Or InStr(1, RR(r), "microsoft.com") > 0 Or InStr(1, RR(r), DOM) > 0 Or InStr(1, RR(r), "IE=edge") > 0 Then
        Else
            Debug.Print "alle http", RR(r)
        End If
    End If
Next r
Debug.Print vbLf & "--------------------------" & vbLf

End Sub

Meine Beobachtung war, dass viele Newsletter Tracking-Pixel enthalten, aber in den CSS wurde nur die Bildschirm-Größe geprüft, aber nicht "nach Hause" übermittelt.

Weitere Idee oder Beobachtungen wären willkommen.

Die Angeregung war "youtube.com/watch?v=em7Mja6CNwY".

MfG
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste