U
    @†6^·C  ã                   @   s0   d dl Z d dlmZmZmZ G dd„ deƒZdS )é    N)Ú
SpiderFootÚSpiderFootPluginÚSpiderFootEventc                   @   sB   e Zd ZdZi Zi ZdZeƒ fdd„Zdd„ Z	dd„ Z
d	d
„ ZdS )Úsfp_webanalyticszWeb Analytics:Footprint,Investigate,Passive:Content Analysis::Identify web analytics IDs in scraped webpages and DNS TXT records.Nc                 C   s4   || _ |  ¡ | _t| ¡ ƒD ]}|| | j|< qd S )N)ÚsfÚtempStorageÚresultsÚlistÚkeysÚopts)ÚselfÚsfcÚuserOptsÚopt© r   ú;/var/www/spiderfoot.crq.systems/modules/sfp_webanalytics.pyÚsetup   s    
zsfp_webanalytics.setupc                 C   s   ddgS )NÚTARGET_WEB_CONTENTÚDNS_TEXTr   ©r   r   r   r   ÚwatchedEvents"   s    zsfp_webanalytics.watchedEventsc                 C   s   dgS )NÚWEB_ANALYTICS_IDr   r   r   r   r   ÚproducedEvents&   s    zsfp_webanalytics.producedEventsc           	      C   sŒ  |j }|j}|j}| j |¡}|| jkr@| j d| d ¡ d S d| j|< | j d| d | ¡ |dkrpt d|tj	¡}|D ]b}| 
¡  d¡r”q€| 
¡  d	¡r¤q€| 
¡  d
¡r´q€| j d| ¡ tdd| | j|ƒ}|  |¡ q€t d|tj	¡}|D ]D}| 
¡  d¡rqø| j d| ¡ tdd| | j|ƒ}|  |¡ qøt d|tj	¡}|D ]4}| j d| ¡ tdd| | j|ƒ}|  |¡ qRt d|tj	¡}|D ]4}| j d| ¡ tdd| | j|ƒ}|  |¡ qœd|kr&t d|tj	¡}|D ]4}| j d| ¡ tdd| | j|ƒ}|  |¡ qðt d|tj	¡}|D ]4}| j d| ¡ tdd| | j|ƒ}|  |¡ q:|dkrˆt d| ¡ tj	¡}|D ]$}tdd| | j|ƒ}|  |¡ q’t d| ¡ tj	¡}|D ]$}tdd | | j|ƒ}|  |¡ qÐt d!| ¡ tj	¡}|D ]$}tdd | | j|ƒ}|  |¡ qt d"| ¡ tj	¡}|D ]$}tdd#| | j|ƒ}|  |¡ qLt d$| ¡ tj	¡}|D ]$}tdd%| | j|ƒ}|  |¡ qŠt d&| ¡ tj	¡}|D ]$}tdd'| | j|ƒ}|  |¡ qÈt d(| ¡ tj	¡}|D ]$}tdd)| | j|ƒ}|  |¡ qt d*| ¡ tj	¡}|D ]$}tdd)| | j|ƒ}|  |¡ qDt d+| ¡ tj	¡}|D ]$}tdd,| | j|ƒ}|  |¡ q‚t d-| ¡ tj	¡}|D ]$}tdd.| | j|ƒ}|  |¡ qÀt d/| ¡ tj	¡}|D ]$}tdd0| | j|ƒ}|  |¡ qþt d1| ¡ tj	¡}|D ]$}tdd2| | j|ƒ}|  |¡ q<t d3| ¡ tj	¡}|D ]$}tdd4| | j|ƒ}|  |¡ qzt d5| ¡ tj	¡}|D ]$}tdd6| | j|ƒ}|  |¡ q¸t d7| ¡ tj	¡}|D ]$}tdd8| | j|ƒ}|  |¡ qöt d9| ¡ tj	¡}|D ]$}tdd:| | j|ƒ}|  |¡ q4t d;| ¡ tj	¡}|D ]$}tdd<| | j|ƒ}|  |¡ qrt d=| ¡ tj	¡}|D ]$}tdd| | j|ƒ}|  |¡ q°t d>| ¡ tj	¡}|D ]$}tdd?| | j|ƒ}|  |¡ qît d@| ¡ tj	¡}|D ]$}tddA| | j|ƒ}|  |¡ q,t dB| ¡ tj	¡}|D ]$}tddC| | j|ƒ}|  |¡ qjt dD| ¡ tj	¡}|D ]$}tddE| | j|ƒ}|  |¡ q¨t dF| ¡ tj	¡}|D ]$}tddG| | j|ƒ}|  |¡ qæt dH| ¡ tj	¡}|D ]$}tddI| | j|ƒ}|  |¡ q$t dJ| ¡ tj	¡}|D ]$}tddK| | j|ƒ}|  |¡ qbd S )LNz	Skipping z as already mapped.TzReceived event, z, from r   z\bua\-\d{4,10}\-\d{1,4}\bz
ua-000000-z
ua-123456-zua-12345678zGoogle Analytics match: r   zGoogle Analytics: z\b(pub-\d{10,20})\bzpub-12345678zGoogle AdSense match: zGoogle AdSense: zG<meta name="google-site-verification" content="([a-z0-9\-\+_=]{43,44})"z Google Site Verification match: zGoogle Site Verification: z8<meta name="verify-v1" content="([a-z0-9\-\+_=]{43,44})"z_qevents.pushz\bqacct:\"(p-[a-z0-9]+)\"zQuantcast match: zQuantcast: z><meta name="ahrefs-site-verification" content="([a-f0-9]{64})"z Ahrefs Site Verification match: zAhrefs Site Verification: r   z1google-site-verification=([a-z0-9\-\+_=]{43,44})$z+logmein-domain-confirmation ([A-Z0-9]{24})$zLogMeIn Domain Verification: zYlogmein-verification-code=([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$zHdocusign=([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$zDocuSign Domain Verification: z7globalsign-domain-verification=([a-z0-9\-\+_=]{42,44})$zGlobalSign Site Verification: z5atlassian-domain-verification=([a-z0-9\-\+\/_=]{64})$zAtlassian Domain Verification: z[adobe-idp-site-verification=([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$zAdobe IDP Site Verification: z+adobe-idp-site-verification=([a-f0-9]{64})$z'adobe-sign-verification=([a-f0-9]{32})$zAdobe Domain Verification: z#stripe-verification=([a-f0-9]{64})$zStripe Domain Verification: z+teamviewer-sso-verification=([a-f0-9]{32})$zTeamViewer SSO Verification: zXaliyun-site-verification=([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$zAliyun Site Verification: z,facebook-domain-verification=([a-z0-9]{30})$zFacebook Domain Verification: zXcitrix-verification-code=([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$zCitrix Domain Verification: z+dropbox-domain-verification=([a-z0-9]{12})$zDropbox Domain Verification: z&detectify-verification=([a-f0-9]{32})$zDetectify Domain Verification: z"drift-verification=([a-f0-9]{64})$zDrift Domain Verification: z(ahrefs-site-verification_([a-f0-9]{64})$z/status-page-domain-verification=([a-z0-9]{12})$z Statuspage Domain Verification: z#ZOOM_verify_([a-z0-9\-\+\/_=]{22})$zZoom.us Domain Verification: z$mailru-verification: ([a-z0-9]{16})$zMail.ru Domain Verification: z$yandex-verification: ([a-z0-9]{16})$zYandex Domain Verification: z&brave-ledger-verification=([a-z0-9]+)$zBrave Ledger Verification: z+have-i-been-pwned-verification=([a-f0-9]+)$z have-i-been-pwned Verification: z)cisco-ci-domain-verification=([a-f0-9]+)$z Cisco Live Domain Verification: )Ú	eventTypeÚmoduleÚdatar   Ú
hashstringr   ÚdebugÚreÚfindallÚ
IGNORECASEÚlowerÚ
startswithr   Ú__name__ÚnotifyListenersÚstrip)	r   ÚeventÚ	eventNameÚsrcModuleNameÚ	eventDataÚ
sourceDataÚmatchesÚmÚevtr   r   r   ÚhandleEvent*   s&   


 þ þ þ þ
 þ þ
 þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þzsfp_webanalytics.handleEvent)r#   Ú
__module__Ú__qualname__Ú__doc__r   Úoptdescsr   Údictr   r   r   r.   r   r   r   r   r      s   r   )r   Úsflibr   r   r   r   r   r   r   r   Ú<module>   s   