From b06ba0eab0c410087286b9bf102a1647a7578e04 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sat, 24 Nov 2018 03:03:09 +0000 Subject: [PATCH 01/67] Remove unused technologies (#2479) * Remove AMPcms - It's not used: https://www.wappalyzer.com/technologies/ampcms - Its website is dead: https://www.ampcms.org/ * Remove the icon as well * Remove Accessible Portal - It's not used: https://www.wappalyzer.com/technologies/accessible-portal - Its website is dead: http://www.accessibleportal.com/ * Remove WebOptimizer - Not used https://www.wappalyzer.com/technologies/web-optimizer - Website dead: https://www.web-optimizer.us/ * Remove SHopalyize - Not used: https://www.wappalyzer.com/technologies/shopalize - Website dead: http://www.shopalize.com/ * Remove NetMonitor - Not used: https://www.wappalyzer.com/technologies/netmonitor - Website dead: https://netmonitor.fi/en * Remove Gravity Insights Not used: https://www.wappalyzer.com/technologies/gravity-insights Website dead: http://insights.gravity.com/ * Remove Co2Stats Not used: https://www.wappalyzer.com/technologies/co2stats Website dead: http://ww12.co2stats.com/ * Remove bugsense - Not used: https://www.wappalyzer.com/technologies/bugsense - Website dead: http://bugsense.com/ --- src/apps.json | 87 -------------------------------- src/icons/AMPcms.png | Bin 779 -> 0 bytes src/icons/Accessible Portal.png | Bin 682 -> 0 bytes src/icons/BugSense.png | Bin 274 -> 0 bytes src/icons/CO2Stats.png | Bin 642 -> 0 bytes src/icons/Gravity Insights.png | Bin 256 -> 0 bytes src/icons/Netmonitor.png | Bin 902 -> 0 bytes src/icons/Shopalize.png | Bin 711 -> 0 bytes src/icons/Web Optimizer.png | Bin 520 -> 0 bytes 9 files changed, 87 deletions(-) delete mode 100644 src/icons/AMPcms.png delete mode 100644 src/icons/Accessible Portal.png delete mode 100644 src/icons/BugSense.png delete mode 100644 src/icons/CO2Stats.png delete mode 100644 src/icons/Gravity Insights.png delete mode 100644 src/icons/Netmonitor.png delete mode 100644 src/icons/Shopalize.png delete mode 100644 src/icons/Web Optimizer.png diff --git a/src/apps.json b/src/apps.json index 2be018fc0..559ba20ba 100644 --- a/src/apps.json +++ b/src/apps.json @@ -56,23 +56,6 @@ "icon": "ebis.png", "website": "http://www.ebis.ne.jp" }, - "AMPcms": { - "cats": [ - 1 - ], - "cookies": { - "AMP": "" - }, - "headers": { - "X-AMP-Version": "([\\d.]+)\\;version:\\1" - }, - "icon": "AMPcms.png", - "implies": "PHP", - "js": { - "amp_js_init": "" - }, - "website": "http://www.ampcms.org" - }, "AOLserver": { "cats": [ 22 @@ -124,17 +107,6 @@ "icon": "Accelerated-Mobile-Pages.svg", "website": "https://www.ampproject.org" }, - "Accessible Portal": { - "cats": [ - 1 - ], - "icon": "Accessible Portal.png", - "implies": "PHP", - "meta": { - "generator": "Accessible Portal" - }, - "website": "http://www.accessibleportal.com" - }, "Acquia Cloud": { "cats": [ 22 @@ -1376,17 +1348,6 @@ }, "website": "http://bubble.is" }, - "BugSense": { - "cats": [ - 10 - ], - "icon": "BugSense.png", - "js": { - "Bugsense": "" - }, - "script": "bugsense\\.js", - "website": "http://bugsense.com" - }, "BugSnag": { "cats": [ 10 @@ -1524,14 +1485,6 @@ }, "website": "http://www.cmsimple.org/en" }, - "CO2Stats": { - "cats": [ - 10 - ], - "html": "src=[^>]+co2stats\\.com/propres\\.php", - "icon": "CO2Stats.png", - "website": "http://co2stats.com" - }, "CPG Dragonfly": { "cats": [ 1 @@ -3924,16 +3877,6 @@ "script": "/wp-content/plugins/gravityforms/js/[^/]+\\.js\\?ver=([\\d.]+)$\\;version:\\1", "website": "http://gravityforms.com" }, - "Gravity Insights": { - "cats": [ - 10 - ], - "icon": "Gravity Insights.png", - "js": { - "gravityInsightsParams": "" - }, - "website": "http://insights.gravity.com" - }, "Green Valley CMS": { "cats": [ 1 @@ -6662,17 +6605,6 @@ "icon": "Netlify.svg", "website": "https://www.netlify.com/" }, - "Netmonitor": { - "cats": [ - 10 - ], - "icon": "Netmonitor.png", - "js": { - "netmonitor": "" - }, - "script": "netmonitor\\.fi/nmtracker\\.js", - "website": "http://netmonitor.fi/en" - }, "Neto": { "cats": [ 6 @@ -8773,17 +8705,6 @@ "script": "^https?://codice(?:business|ssl|pro|isp)?\\.shinystat\\.com/cgi-bin/getcod\\.cgi", "website": "http://shinystat.com" }, - "Shopalize": { - "cats": [ - 5, - 10 - ], - "icon": "Shopalize.png", - "js": { - "Shopalize": "" - }, - "website": "http://shopalize.com" - }, "Shopatron": { "cats": [ 6 @@ -10621,14 +10542,6 @@ "implies": "Haskell", "website": "http://www.stackage.org/package/warp" }, - "Web Optimizer": { - "cats": [ - 10 - ], - "html": "]*lang=\"wo\">", - "icon": "Web Optimizer.png", - "website": "http://www.web-optimizer.us" - }, "Web2py": { "cats": [ 18 diff --git a/src/icons/AMPcms.png b/src/icons/AMPcms.png deleted file mode 100644 index 1d528c84bdb09aba8603e3d4e108d919c1965c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmV+m1N8ifP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008gNkl<ZcmajL zeQ1nv00;2jHiK+nyJtO~d!BoqJ-54?=iJM-J-2al$8OJKcXrR&8*MUX!ZtRMVQ4{` zQVj}9D7A$m(j=Eupz<Hs7D9q(VUXtQDO=Tb_>jLTEG$$bkw{N%ZEasoP0e#n)1rRA zztv)~q>z81X*xkw)vl`QY81`!L6$x6dc9Cp6_H2;fk5D%D2iqhkJ)Ta@OV5sa`Qa> zY3YW|44tmB(+vSCgKpwXVzi*30HI(IvMk?a7$$|p;(0#Z$O<i1o|-^(^~$ud%S#Ls z$p`~QH_G|)x8mYr@I2o@Vx?0|645Q5JKeOcwc^Z~Q-@!l?LPUTbLZM<bG4)rosl&) z`u%>`Y_>}zo=pw2+0Naq{hvO*1n>^{eh)tfAE2lE#LxD1Wg5{roH=(SNqRzJZCoZN z)RpHRym@Xt@IDIs_yl~pfnNh{cyp@-t807@n-|#=9ZuIqo6UBgjN&+MiXdc`W@eca zrI|BtUua^1r@QdS5b!D+1Dz94UN~d8ZK;$c=Q%5RUg#pDoK9!0-EKcXbaIaC_Vqdn zxSs+1dIaDi@HhqUc8)>4-#WauO0;K*oXcorU1XG^DBad<={nIhFI5hnUd#hmQh_h4 zfqpB{n}~r;X=n^PAMf9~Ace$I6y>tl>-}nES#IT$dCZ2&yr;d3SiEUZ!so7Jyf|dQ zku|pAEsgUlNjz@1yCW0|!j>(aC%Ww|;mi$H_MUy!_P0k{W(@9Fk$tmXbA*X*%2X<e z#Ns$EtEi}GC>RPNFW+-q&Ua5Dx{d~E{N8$gG8y4==hO*;P(b1lMRAYM=R-IgMp;?7 zZ<g2B5mW=A(EQ@L!P3%((1LK(;c#4K7$%j(!!XP^p68FrvW$|F5@?!+h2<59EUbW{ zsxX_)cMJxDk^B!$)0!X%=d4z1pT%N%W-^(sQ53a`rs-r7$8Y{&3<MPMz%T#+002ov JPDHLkV1kJGa-skL diff --git a/src/icons/Accessible Portal.png b/src/icons/Accessible Portal.png deleted file mode 100644 index 688c1122ec2e721696fa7ec48fc25053cae77085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007UNkl<ZcmdtO z;WHC_00;12=X%qtT&2289bme;U0v7W60W7Lth&S{x;ph-xR%U1qv@Qoumyv0B)2;_ zCZoC9Ba*PIZLralZ7xAGE4p1Wwr}-fZ#sWK*N6OF+D2MJuGKLc!-W4S8D-h^>8<ie z^LQp5)8RZ!28l7x$bqfPhpeT4s%LL-G0jT3Ps8~~Y2C%mDIHnmr;uD6i=K9Gz(9aW z0(|kF01R%#2{UFF2&EqR;&>57;Dyr_7Y%bGIf>}q`5Ao#CWZg(z4{_~ZQJ#Cc9Z`Q zrU+onU=t^>@(XY*`RTn5_5(jY1#zNKD`c)qkh@@3o77Y>I(J2Ev<KuppO1Ue-_OMN zO%sr(cA~}{i)F_;0&0XBo>7L5uIdEeaw<ZLg78(k8KyBFOE8Aev_WugtB{+k1DzwW z+|uZREO0c_5TjB-q<=^tmR-R5K&)(MELKE^*$#7$K=eOXLVgjxM+j>aDJ&h*YNtRQ znHi&INFEPEqu&ok*F3^r&63|x`{ED+69=*39IRVopbtn|utyYDEpeJT${KCz>q>3H za?5x)1f>ny=xT>8<k<rDwF1n6m&6G}qDW-9V>0T*iq7Y<!@4U0aAyG?T);CM@Dl*L zs~q+N^{~;~tVmavVt8R2ae_LF0kI1f`_6Q-TPsC0c03{zIp8LVj7om4LSIl)BI6I_ zAHVbl4N`M7`4hewH=^a>2Q<2_{?H_67d2h&qhvDSmdb<IoifLsyVB_`H@a7SStAzZ z$CVvqEifs(@G3%xo?tmNXA9Lze(cS<_PnFK1{IAf`*f1`wpXIC(8<5$Cm1<)GO3=D Q<p2Nx07*qoM6N<$g8Z&Gg#Z8m diff --git a/src/icons/BugSense.png b/src/icons/BugSense.png deleted file mode 100644 index 13eafe257606623a9b5decc348a53902ff891f4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipSBACkNkTd{2g-nY8B2ov zf*Bm1-ADs+CV09yhDb=BJ-9LVkb^|S#r2z6j_!Yz%TT?fK(_NxZcEFJ19FXKq3e`S z+>p0BH}QtTp5y<sgx1gUo?m%&{#%&^$*D!gj;H0n7e9HCVp=gz>3>YB>8!i8m9tkK zx|d`k<Qnl;YGzWp=_?n(F!iaA?)_%jA|f}ZUu#3^#ToW?4{vPra5z)JzCPrw`HKd% dc|!Rw8H1PRxM`_Bt^>M_!PC{xWt~$(699fmb8`Ry diff --git a/src/icons/CO2Stats.png b/src/icons/CO2Stats.png deleted file mode 100644 index 47689c3be86c32a880ebb3acfe9820705e24c2fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 642 zcmV-|0)737P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006>Nkl<ZILoDz z%}bO~6vlt=eEI5tS&=eXQG}R55$%PH#43XN52{rHK|s(t+O!I&Wt*s#1QB8d5)cFh zC1`32n%{~!Iy26UGxOei?wuPjG9;4(bm43+_j&j|_nZU&dAxr;7#!_)$^<y)XsC;` zv6bXt(_to8#^^eEk;rbsiRJHZIlaKd$|&i=2F^MBs86<-ValIiX!a`y8WV*6Ce9R6 zZe-ybgQNW@2?&QG6;#i|xH7Sb&sHf<EF7zi@MY?w8yJ2?V($@_)AKY$<7lIhvY|c} zXDKyDXZr;@Pn@TDPog$LHpsGB$`bcC(ME`P8f^u!nn*ZGQI!xY9B*m&fSnOmGK)@& zLW{;2gBXoiL5v{AAVvsu2{BUDR0)18kGKb~@6p!Mfh(6$5}=JH5{{v*MvM>*M+tNZ zV|CS_N{}z*N#{~z3Tc$pm8udL#0uKT_MNFU&_*%yYnqZOqI7_Wu9OkPD#R$PHLPV< zDd<A2L0h7O8|QjC*4#$6xQQtXVid+`thE$WfyRa=Zg=0M`_$#yKS(sSdH^p!J#z)M zh1d#iovp+OL?KqV({q1E>uUz7q>ChTYXqWD+a1tGFlCGRBYTx#VrA6z5A|{B%r!oY zzoW6fk)G3635CMUtWD!bd~Df}$|uP+wbmGfrdB6;JN$;>xgq*Kzu?gRqddL&+}ju5 zPuTNlsH?}1`rPX3<;vOXwR1neKI@*mf8>@n=H26ghi*N$<^Yyb^KNW$*v%z>y78qE cx7*VF2D<KMRN`m1KL7v#07*qoM6N<$f<_xGz5oCK diff --git a/src/icons/Gravity Insights.png b/src/icons/Gravity Insights.png deleted file mode 100644 index 57aeabc135e03b17ab4375896c413c263f2eae5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmV+b0ssDqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002TNkl<ZIE`aq znEBrlh#vy+e-iOkAeLhQ5>Lp`48z+QD9{YT-*6h>u=)T0hBN>F8>}H<2)cm6vj6`t zy!np;KK%UuKVT=31{`<>(e&W+|NjNY{{NqF8DWUPd;$i5Y=;35n<(#~`x^v6UVs@0 z(g?#Kd7=yeIUn6cAOJFiXfGf;cfm~}4L}Y=P@sV{!ZZ_Y04StkhQI*G5RkWsG604_ zUI2v&$q9)>`~hUZ843)T4>CXwh&KZ9Pm*k&`F{lv^8)~D(#$gF?~i)`0000<MNUMn GLSTa9*<)=0 diff --git a/src/icons/Netmonitor.png b/src/icons/Netmonitor.png deleted file mode 100644 index 45da0d73325886db8c175199e158b94508731f07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 902 zcmV;119|+3P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0009`Nkl<ZcmV}~ zZAhGT0Kk9$=fyjpQ@vB~MNPNN*Ob(Vjay_5!y*VaU`BpxMVnQFHJGCSRzU?(UkkR@ zfJFl$kch<!+1TdB=F)ZIn%bs%&bhl&@1A?^?Rg6U0000m75n$Onfc{|i>vF;XLH4f zBnh#d(bpfWtX-R%zke3E2><{f003t1&Z`qsvtKT*rH%vx0W}h=!B_4@0H$e^$>q4e z8n-8|-TH1OcK0}t2T%ZRPv7zUbm7YRk|XVVroENgKo$N<4WH&k0J%bmt&Bm1RxZ~C z0v}XVXzf?8-`)@86o3npcTVbgdtYzYlZ1l-+M6SUYpU>+sR*EGS|ql0=2sqJ+YW<! zb`7OA(_aBc#JTZ{ofmKXGt=AE>1k>V5$$QEq0Wya2><{9T-Rk|Q|EeYf%tlYnYnw; z&*K+%$*q0SF`;+{>cc_$J9g666he{&uH$g)=1o>sR;aJ9N0wzOG!GzHO>E)Vj(E87 z*p-&n6MHQOkl=|>4MGTP+v4+2KV$UWLyR68W$gF~ilzlXV<d>Is^~=vzuzB~w)I?- zX<G=O+*<~~^xxB*K6RSBVW64@<LA#Y`R5<lMjEw{K`rRm`W98f4l1T)QYw}xl}rQx z;J7Y@LV+@`m$#l$>BOe)*JEt_rI9bXG$)H_=@L(8Eg^Yi5!bT@4-+XeMjn9v{(gqv z7{)MiOcWcb+7YHBXy9{`XikC(DNWd$Lx^Hhj=uDA=Xxp=6|zDw;HRxQf-K7nz4{9M zeZ6Rb5Y=6~X_o)PTV_%aDg{@dVzO4-{hK^|;J~BU;_5q!qDt}P7CRflglnsjB#D-m z7P9FSc_l#3*Fc?EAYp<ffh9@oJ#pqk0Wk9Z*tfCe<k9+u2$4{b{ew{kp6y1#;nKte z86(Hs$|eE*3j1~}p(i$}?0NG?;GhC9(AV)vJelsEU3f4Q-_n^`en|cAmkCw-*jip> zJEOCi&SK;(vWCLQ;NXow^u3P&1OUMIr_N}<T%G><^4!v4Q&J_$HDm#rk;Jhq%t9W; zbs2f>#UD-{J$wvE0|)>B0DzCb_-4;!Y~k&D@r~W7Og8MZa&E1^@^MdF%hc<GFPsG~ c0RRB}54kRG7qdG?xc~qF07*qoM6N<$f~8@u)Bpeg diff --git a/src/icons/Shopalize.png b/src/icons/Shopalize.png deleted file mode 100644 index c73389954e3db02e4b4bad89d89d26fe40ffe1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 711 zcmV;&0yzDNP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007xNkl<ZILn37 zTS!v@9LMnyu(zThD1?Blm!1mrC5Q+FBts=cER-N4P_2=KN@O8rX)J{>h15c+W-NzU zmP_4q7k6`4-HvBBrn{VNZF6(BvpTc$>nUh$(jUGrfBt-){u}^%{%vSr_LS2>C4y8O z4w8zE4oi#j-2vFc$+vXashCJh;mn-{OzDDfIfGmO1%#bKu14ef;&6syiS0D5JX;3M zWY9cpL2Nq>qtQcrow4wC1r&<4@npmgM%4@2_y*RIn^@N`qHe^FUP%Z-H3ce?gjj5D z$O~9W%9UDv0gN9;X0jT1UI;?afxT^3RE_$;z3ax<QV^z9uP!fOSn(M{P7Ua(dNA{) zVCQO)@>}szmq3jujtl*3c&7`(Oa$zC0gY*WnlelR1ILhAs0Yik_%o@WJ1BZ=Max?f zrnP`CFCbI9`rQ^S(7Ye%kR2?`W+hk(pi4wRPxv=?0h~Q5hXcHcDtxEYU>GK=l-`D| zvPP(^epV>7adQBr(epu|6`{CqA6#JvXqwI{F)agIPy(^R1IZ#;ode7pJeH?YKFTMK zphwe)WHOo6R?|b^+*POrvzT9Af1eAOH$r?_H@dYvlqn8j%=QG)%{ao;H$;2KkSe(b z@5Ng%^a&s}Z+LS6iN*V)YwkYIzB-6Dc^&SlFQa_C5aew>aI_SW7Cyi!M(lhOBo<#L z2avA%f3-?$P$?_Gjn5UR{&*ax2M<8q{s7>d1aqPS;Y)2Gdq%Oa>PzRovMmrFT6&Fk zaV@&%9-;Nqb#zX5U`C>Wd{POq-i6r}FJweu$Ks0easbjBuT+x3w49)zASgyj24gCF tnAADL5|cYR=%!K)RD>zA0o=d;;5V2i6V`32&_e(K002ovPDHLkV1f~KIxzqM diff --git a/src/icons/Web Optimizer.png b/src/icons/Web Optimizer.png deleted file mode 100644 index 64fe47fae0ccea8b8dd9aeda43d035d844a66fbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0002<P)t-s00030 z|Nj61Knx5$oSe1P)ZFFe>ihfr0s=K4AWSJKR4OV|qN25<qqVB4zdSu{KtN{h?(#@T zZA(jUOiXZ1O>t3CbW~J!S66sgSb1Y(f@*4raBz%paE)+rlyPy6a&nJ)dX;>Aor8m% zhK8Pqh@gpypoxj6lar{Elc^vfSOx|-BqUIwp|h*2yt1;wxw*%?yUEJR)zZ@2)6?EH zHC@)$-re2g<KyY$<LVL;K@t;9^78fe_W1Yr`1kku`T6?!`TG_ZP#76fBO^~GB~btX zGdMYFot?IypR%8yv!9>0IXPfDI$}CIYyJKHl9H&Z>a{rl0004WQchC<K<3zH0002P zNkl<Z7#S_V1C|6a00hvgbSFKwZQJJB_dm^M^7`W;IvoW9qiGbbare*Yj$wQ>S`&4- zs7b5w4sBR%DjKR;9Res;Hgs(&MWB-lQgeQ(1#=w~vg?KTq;2y}EY{fq(uotpKTfab zyoPy7q!Ei884{)az9d3CMq)@USG?XtyDe^4u9hj}eRZ;SKcDY4vhK?R-e<|JP1;+^ zCoh1^&OfIy_wO>$zWY{rb~wz+R{sk|-1B01;&932z_JEO3GE+nLm1jVfMf6g0000< KMNUMnLSTZ7FYjRh From 4b4a667b30351cb08487f00edb287262d9fc2b35 Mon Sep 17 00:00:00 2001 From: Maruthi Adithya <maruthi12@protonmail.com> Date: Sat, 24 Nov 2018 08:33:54 +0530 Subject: [PATCH 02/67] FreshChat Application Added (#2481) - FreshChat Application Added --- src/apps.json | 8 ++++++++ src/icons/freshchat.png | Bin 0 -> 580 bytes 2 files changed, 8 insertions(+) create mode 100644 src/icons/freshchat.png diff --git a/src/apps.json b/src/apps.json index 559ba20ba..faadfe896 100644 --- a/src/apps.json +++ b/src/apps.json @@ -3260,6 +3260,14 @@ "script": "analytics\\.freespee\\.com/js/external/fs\\.(?:min\\.)?js", "website": "https://www.freespee.com" }, + "Freshchat": { + "cats": [ + 52 + ], + "icon": "freshchat.png", + "script": "wchat\\.freshchat\\.com/js/widget\\.js", + "website": "https://www.freshworks.com/live-chat-software/" + }, "Freshmarketer": { "cats": [ 10 diff --git a/src/icons/freshchat.png b/src/icons/freshchat.png new file mode 100644 index 0000000000000000000000000000000000000000..b79a05767d4f75dbba841393784abb05316d55ac GIT binary patch literal 580 zcmV-K0=xZ*P)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ0006DNkl<ZScT1) zu~Nc75QcdK9>GWO5i-MF&jUE4rKK}Gfc7+0wo&&O#|CUHl)^OHSO_*WIu;h_+(JO2 zhze(+(Vz#n2?_C^`HRe4a$k1$?l#F}Ldvq;Y);@R1FSNEr(DQOE>K0cykzC}W>}6) zPT=Y%z&w-B1|xwmkXEuFKV~4eX2NiR_98$6zSV+Qwwqm4RDN3vGk>AR2$WW2v_L7; z%yb|I(n=d<5-8<VO#tySu7$a&Q0uAf3s3Dfo@RRc!c&ElZUi8Z4rTEAk*lsd?<%ZX z-bfW{JsQyGGB*!gsdiL<I1UZtt3Mp8m1@TfL`~Q6%}Zn$UuSniGY}JaNC66_s(9X4 zg<6l~;(7o3zLqy4M2J{FK~X~QJAcrgNVOS=cud440ub#@|20shIZ%67&sv*`pHf5h zut27<-s|-3A(5hPc_UT7f7QC>ji$mh9^Pip1JWTc`#7}eJeua&A#aTHs?r=7=U}3} zK|VSv&4Fq>yoGk9IUt{7*1o&sw;rUlC2Ek)|7y<4xHj3o5?5P7(W(D!?o*5s18Hf$ z$2eeV@zKGO7ADYJFRs9KsroI;cC*yuWL_A{cC$txA1cvEfpo|)K_yXB#y=cJsIt2p z%a#DrnYx;y=<7dG=rl5chp~d_lmpCjz!C@PaF7lY*kuB{{xt_I<pA?hp8WyW8wH;$ Sq#3sW0000<MNUMnLSTY290qd$ literal 0 HcmV?d00001 From d9b7f6167622173b92f5a67441ec853fdfa6d3ef Mon Sep 17 00:00:00 2001 From: Nacim Goura <nacim.goura.dev@gmail.com> Date: Sat, 24 Nov 2018 04:04:33 +0100 Subject: [PATCH 03/67] add tailwindcss (#2483) I added tailwindcss to the detection list. Tested in Chrome. github : https://github.com/tailwindcss/tailwindcss --- src/apps.json | 8 ++++++++ src/icons/tailwindcss.svg | 1 + 2 files changed, 9 insertions(+) create mode 100644 src/icons/tailwindcss.svg diff --git a/src/apps.json b/src/apps.json index faadfe896..1e8d5c1b3 100644 --- a/src/apps.json +++ b/src/apps.json @@ -9577,6 +9577,14 @@ "script": "(?:TWikiJavascripts|twikilib(?:\\.min)?\\.js)", "website": "http://twiki.org" }, + "tailwindcss": { + "cats": [ + "18" + ], + "html": "<link[^>]+?href=\"[^\"]+tailwindcss(?:\\.min)?\\.css", + "icon": "tailwindcss.svg", + "website": "https://tailwindcss.com/" + }, "TYPO3 CMS": { "cats": [ 1 diff --git a/src/icons/tailwindcss.svg b/src/icons/tailwindcss.svg new file mode 100644 index 000000000..5b0424030 --- /dev/null +++ b/src/icons/tailwindcss.svg @@ -0,0 +1 @@ +<svg class="mx-auto block h-24 mb-3" viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><circle id="b" cx="40" cy="40" r="40"></circle><filter x="-8.8%" y="-6.2%" width="117.5%" height="117.5%" filterUnits="objectBoundingBox" id="a"><feOffset dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset><feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" in="shadowBlurOuter1"></feColorMatrix></filter><linearGradient x1="0%" y1="0%" y2="100%" id="c"><stop stop-color="#2383AE" offset="0%"></stop><stop stop-color="#6DD7B9" offset="100%"></stop></linearGradient></defs><g fill="none" fill-rule="evenodd"><g transform="translate(5 5)"><use fill="#000" filter="url(#a)" xlink:href="#b"></use><use fill="#FFF" xlink:href="#b"></use></g><path d="M25.6 33.92C27.52 26.24 32.32 22.4 40 22.4c11.52 0 12.96 8.64 18.72 10.08 3.84.96 7.2-.48 10.08-4.32-1.92 7.68-6.72 11.52-14.4 11.52-11.52 0-12.96-8.64-18.72-10.08-3.84-.96-7.2.48-10.08 4.32zM11.2 51.2c1.92-7.68 6.72-11.52 14.4-11.52 11.52 0 12.96 8.64 18.72 10.08 3.84.96 7.2-.48 10.08-4.32-1.92 7.68-6.72 11.52-14.4 11.52-11.52 0-12.96-8.64-18.72-10.08-3.84-.96-7.2.48-10.08 4.32z" fill="url(#c)" transform="translate(5 5)"></path></g></svg> \ No newline at end of file From dea7130531734cdbaa17a16148d1b840de1eee21 Mon Sep 17 00:00:00 2001 From: Nacim Goura <nacim.goura.dev@gmail.com> Date: Sat, 24 Nov 2018 04:04:52 +0100 Subject: [PATCH 04/67] improve detection docusaurus (#2486) This technology is not detected on all sites that use it. That's why I improved the detection to get more results. --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index 1e8d5c1b3..4a07cfc61 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2484,6 +2484,9 @@ "React", "webpack" ], + "js": { + "search.indexName": "" + }, "meta": { "generator": "^Docusaurus$" }, From 6a4f21125a2c5d185e82fc8d1e4ec5beda46d4a1 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:05:09 +0000 Subject: [PATCH 05/67] Tighten a bit nelify detection (#2487) - The server header always _start_ with Netlify - Change the capitalization of the x-nf-request-id header --- src/apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index 4a07cfc61..f4353429d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -6610,8 +6610,8 @@ 31 ], "headers": { - "x-nf-request-id": "", - "Server": "Netlify" + "X-NF-Request-ID": "", + "Server": "^Netlify" }, "icon": "Netlify.svg", "website": "https://www.netlify.com/" From 2a2265fe1f2948797397cad88bb478189ad574f4 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:05:25 +0000 Subject: [PATCH 06/67] Improve a bit wordpress detection via headers (#2488) * Improve a bit wordpress detection via headers This can be tested [here](https://thelion.ch/) * Remove a `$` --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index f4353429d..7cdb26d57 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10895,6 +10895,9 @@ "PHP", "MySQL" ], + "headers": { + "link": "rel=\"https://api\\.w\\.org/\"" + }, "js": { "wp_username": "" }, From a8df962dfa582d675e01317fb10d0424e51935b6 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:05:37 +0000 Subject: [PATCH 07/67] Improve cloudflare detection (#2491) This can be checked [here](https://hellfest.fr/) --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index 7cdb26d57..f38d9fc04 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1798,6 +1798,9 @@ "cf-ray": "" }, "icon": "CloudFlare.svg", + "cookies": { + "__cfduid": "" + }, "js": { "CloudFlare": "" }, From e492510f4e6e80fe32ccb9665a9cc088fd80fdec Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:05:51 +0000 Subject: [PATCH 08/67] Improve FluxBB detection (#2492) - Wappalyzer is now able to detect localized fluxbb forums, like [this one](http://www.hellfest-forum.fr/) - use https for the website --- src/apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index f38d9fc04..9b2d06f0e 100644 --- a/src/apps.json +++ b/src/apps.json @@ -3161,10 +3161,10 @@ "cats": [ 2 ], - "html": "Powered by (?:<strong>)?<a href=\"[^>]+fluxbb", + "html": "<p id=\"poweredby\">[^<]+<a href=\"https?://fluxbb\\.org/\">", "icon": "FluxBB.png", "implies": "PHP", - "website": "http://fluxbb.org" + "website": "https://fluxbb.org" }, "Flyspray": { "cats": [ From 4b047657b547f4ba633981c48b7561a3c5782f79 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:06:11 +0000 Subject: [PATCH 09/67] Add docker detection (#2493) This can be tested [here](https://www.qwant.com/?q=wappalyzer&t=web) --- src/apps.json | 9 +++++++++ src/icons/docker.png | Bin 0 -> 1871 bytes 2 files changed, 9 insertions(+) create mode 100644 src/icons/docker.png diff --git a/src/apps.json b/src/apps.json index 9b2d06f0e..b8934e930 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2495,6 +2495,15 @@ }, "website": "https://docusaurus.io/" }, + "Docker": { + "cats": [ + 28 + ], + "icon": "docker.png", + "implies": "Linux", + "html": "<!-- This comment is expected by the docker HEALTHCHECK -->", + "website": "https://www.docker.com/" + }, "Dojo": { "cats": [ 59 diff --git a/src/icons/docker.png b/src/icons/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..307dd8f34f9f90c149752619e33a1f8aebfca950 GIT binary patch literal 1871 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 JPDHLkV1gxAfusNc literal 0 HcmV?d00001 From 4d4d9ae8b2e93e6f7c1316c47a54aace5823e653 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:06:23 +0000 Subject: [PATCH 10/67] Add detection of apache coyote detection (#2495) This can be tested [here](https://www.computerworld.com/article/3288925/computer-hardware/as-bitcoin-values-slide-high-end-gpu-prices-drop-too.html) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index b8934e930..f894a797d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -715,7 +715,7 @@ 22 ], "headers": { - "Server": "^Apache-Coyote", + "Server": "^Apache-Coyote(?:/([\\d.]+))?\\;version:\\1", "X-Powered-By": "\\bTomcat\\b(?:-([\\d.]+))?\\;version:\\1" }, "icon": "Apache Tomcat.svg", From e7296ae31565e94735c6fd7cf8d3aff3ff677545 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:06:31 +0000 Subject: [PATCH 11/67] Detect font awesome version (#2497) This common pattern is present, for example [here](https://www.corben.io//advanced-cors-techniques/) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index f894a797d..d578c9c7d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -3192,7 +3192,7 @@ 17 ], "html": [ - "<link[^>]* href=[^>]+font-awesome(?:\\.min)?\\.css", + "<link[^>]* href=[^>]+(?:([\\d.]+)/)?(?:css/)?font-awesome(?:\\.min)?\\.css\\;version:\\1", "<script[^>]* src=[^>]+fontawesome(?:\\.js)?" ], "icon": "Font Awesome.png", From caae139e74e59e2b2b36e17cd200eb523d9c1b59 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:06:42 +0000 Subject: [PATCH 12/67] Add AWS ELB detection (#2498) * Add AWS ELB detection This can be tested [here](https://aphextwin.warp.net/) * oups --- src/apps.json | 10 ++++++++++ src/icons/aws-elb.png | Bin 0 -> 1444 bytes 2 files changed, 10 insertions(+) create mode 100644 src/icons/aws-elb.png diff --git a/src/apps.json b/src/apps.json index d578c9c7d..fd59755e9 100644 --- a/src/apps.json +++ b/src/apps.json @@ -527,6 +527,16 @@ "icon": "aws-ec2.svg", "website": "http://aws.amazon.com/ec2/" }, + "Amazon ELB": { + "cats": [ + 31 + ], + "cookies": { + "AWSELB": "" + }, + "icon": "aws-elb.png", + "website": "https://aws.amazon.com/elasticloadbalancing/" + }, "Amazon S3": { "cats": [ 19 diff --git a/src/icons/aws-elb.png b/src/icons/aws-elb.png new file mode 100644 index 0000000000000000000000000000000000000000..8db61179600fd3682e7f5531f8c0b340701d3396 GIT binary patch literal 1444 zcmZuvdpMM76rVA6YBf@*+-k>Mn6wy%`9>;)(2mcbl$ti7hKi;cWYg9#V=hPuVJ@+h zhYhXTQp!^yTTyK`C2X78?eaVm!dwmZoo4^s^PKN|=e+OlocG)$3^>fv!odQ8Kv+hE zhs1z?pz&LX0#ebIt3)8oY8dn_p};KKggdzjR~6|ZkH#yaapz)PYGC|N@ou%dJnFXM z&(n#+nH1#-cV!`EBFFo)*n5gkQ=JM^3;Z-<ik1&)MSg}N&pFBZ`BKun;kZr&iG!Ub zA<oY^<QE(=h%b+Fsov^3ndb*|qsbu7joh6UKxzS1oe!;9v4|gpEvMrv7_O>(Xd;(t zC=NLL9Ra|`bA8A2d{y~W1%o)-->SQ?A1J^y+>^EJAOU5*0GcnN%|2;X38=u-iXZ?` zL=nq2;{hA>FKmj?k+eo7q;{r|M>4%kaZKk%$9&3+7y^nEHpVxx3De444a_NlF$bU= z33LKdBm55o&THa`r(ox2hsof)Ula%AhdQnaY?7v{vvk4$hYaulV30ty+X;=^K)uv! zNvrks2Yb^!-X5c9%3zIxDUTxFOkC5I>IH69g@MHpxN-&#xL1G{(Fv6?xXM_36-<!Q zaneW}NLUt$m%#*C6j8PX4}3x2z`NCPgt~Ylc%qT%a%B&xJ<$!6-?7iFgXPxA`nEI0 zv-<$0C&j%d)%|{Ez{7O+Cv1;?w&x#g&jF4X7~IQD@<^7~=uz*td4Wovk1~&@EQ$Wa z^ZCs8o#gw1Dy9L0^!OB&z(*wjGct||j87%@S5+se^QmefRW0#X7l&#D6woe>5Yn8D z)(XM4Kw1S;Tbl&-L|1=6*O0DjWa}<+bxj$%<|De6Y`qwokwCKr&|Cp+u9<V#z*`BH zrZ6K0j{UMe|1XdzK;~%lf`t~AR@T<mHnz65%a$*<vvYKGbXxTd))_}|b#+}$T^kBV z#l-GpCLGEa3Pobc$<p$Qib|RM{Dq56Ev>Cr+itYC-|Kle`119~vGMWGlao_Z(`t=I ztJCTA`k5I6pjjg^p8N<BF(XBU1Z~;gm6Txjl{sP&3S||FW`A%9KYd9iyX)3c>+(t( zB&VaEZG7MN@ite>uCzz-v3}_6N4a+F>+2%<L1%0g2Qipy^%%@KGKz=oE+%Xv5npWG zyEX@F&%VAPv?@rjefAaiUEg28n|K)+_&Qh+=Ye+dOBG_pNXMrbu}cqUs$pdMwK)?_ zYS;UbCnRrv@5OZYaQ8I@aI=>!MkT-ROTE3M@xdKzQDlHWAFe4}I>;-hVNO?3SWol2 z{*mZ0W`pzz#jm<<_!zp|n`enIJJIw#3F+{QWi?V2pT<CKZgpUU+~;-W?C~J2@=Xxi zvn$L{&mT!CbveCb!xf(L^<23V>RQ^4D;cA=B<pSVJyx_OJQ#AnsfMLjwXZ()vfw4D z2wSIs<8QjbtFTkRtwZry`{A_USnjF_G&Xl?X<(+?(9aez$qsCq_3k}B-WZzA<2yC! zqbW%dXON=BE7xUD{9O_(vKrs1*gZHn)ISg(C`S&rjnT5^-!(hFxU{Q-^YP7%*f0&O zxNMlt<%`6T636-|*~k&r{2Xe*;?BuV<uX=yAHAdDMo9)rA7*Knh+fjfyjVI^gHE`_ z{5o#j3qxL^E&cNj!k%{}H;8V-%KEJ;+}$bCsn#Jr9jV6LO3ar1P&8TQJ9XMox;NR! zr$pLr50527nL#JhYziEP%cz>hfzg`ly(sghqe6qNYKUfUC)nhFTYx}3P~GP=bQW$f OZf`^=9MZBeA@5(HqK%#a literal 0 HcmV?d00001 From 9ec61155b9e9bc96e7bd8b71d3d0af352a9b3312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Kowalski?= <pavelloz@Gmail.com> Date: Sat, 24 Nov 2018 04:07:00 +0100 Subject: [PATCH 13/67] Add PlatformOS (#2499) --- src/apps.json | 10 ++++++++++ src/icons/PlatformOS.svg | 1 + 2 files changed, 11 insertions(+) create mode 100644 src/icons/PlatformOS.svg diff --git a/src/apps.json b/src/apps.json index fd59755e9..64082e36a 100644 --- a/src/apps.json +++ b/src/apps.json @@ -7504,6 +7504,16 @@ }, "website": "http://planetplanet.org" }, + "PlatformOS": { + "cats": [ + 1 + ], + "icon": "PlatformOS.svg", + "headers": { + "x-powered-by": "^PlatformOS$" + }, + "website": "https://www.platform-os.com" + }, "Play": { "cats": [ 18 diff --git a/src/icons/PlatformOS.svg b/src/icons/PlatformOS.svg new file mode 100644 index 000000000..7388d841e --- /dev/null +++ b/src/icons/PlatformOS.svg @@ -0,0 +1 @@ +<svg height="700pt" preserveAspectRatio="xMidYMid meet" viewBox="0 0 700 700" width="700pt" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.1 0 0 -.1 0 700)"><path d="m3322 4704c-466-78-816-447-903-952-37-220-23-482 38-692 118-409 436-694 848-761 112-18 330-16 440 5 496 93 807 421 902 951 25 141 23 410-6 553-96 491-414 817-875 897-109 19-329 18-444-1zm288-415c280-45 468-323 487-719 14-297-58-542-204-700-106-115-245-169-398-156-192 15-336 119-431 311-149 302-131 759 41 1025 83 129 189 205 327 235 79 17 97 17 178 4z"/><path d="m5617 4704c-289-52-501-199-602-419-43-92-55-154-55-281 0-122 26-218 85-310 102-160 255-265 540-374 244-93 335-147 380-223 76-130 15-276-141-338-54-21-74-23-219-23-146 1-170 3-277 32-64 17-156 47-203 67-47 21-89 35-92 31-3-3-29-103-58-221l-53-216 57-25c73-33 199-69 314-91 134-25 480-25 595 0 349 77 548 239 633 517 27 88 32 259 10 350-46 191-193 356-417 468-34 17-126 57-205 88-341 134-423 204-406 350 5 51 41 103 95 139 119 78 388 73 619-10 54-20 102-37 107-38 6-1 37 94 69 212 49 173 57 215 46 222-35 22-210 71-315 89-139 24-386 26-507 4z"/><path d="m1299 4050c-77-12-173-46-238-82-63-36-166-130-206-189-25-35-30-38-36-22-4 10-8 63-8 118-2 158 11 146-150 143l-136-3 3-25c2-14 6-550 9-1192l5-1168h154 154v456 457l40-51c82-102 233-180 391-202 334-46 663 154 788 479 91 235 97 563 14 794-85 240-260 413-479 471-73 20-230 28-305 16zm193-270c165-62 277-210 323-425 43-206-1-472-104-624-217-319-716-245-840 126-19 56-21 86-21 284 0 247 8 300 63 404 65 122 177 213 308 250 73 20 196 14 271-15z"/></g></svg> \ No newline at end of file From 1e42e581e3e2b81b2384ff6f6270055d0b5673a5 Mon Sep 17 00:00:00 2001 From: Raz Ohad <admin@bainternet.info> Date: Sat, 24 Nov 2018 05:08:14 +0200 Subject: [PATCH 14/67] Added Elementor Detection (#2500) * Added Elementor Icon * added Elementor detection to apps.json * avoid overkill with patterns --- src/apps.json | 20 ++++++++++++++++++++ src/icons/Elementor.png | Bin 0 -> 2564 bytes 2 files changed, 20 insertions(+) create mode 100644 src/icons/Elementor.png diff --git a/src/apps.json b/src/apps.json index 64082e36a..4ff93980d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2705,6 +2705,26 @@ ], "website": "http://www.ec-cube.net" }, + "Elementor": { + "cats": [ + 1, + 11, + 51 + ], + "html": [ + "<div class=(?:\"|')[^\"']*elementor", + "<section class=(?:\"|')[^\"']*elementor", + "<link [^>]*href=(?:\"|')[^\"']*elementor/assets", + "<link [^>]*href=(?:\"|')[^\"']*uploads/elementor/css" + ], + "js": { + "elementorFrontend.getElements": "" + }, + "script": "elementor/assets/js/[^/]+\\.js\\?ver=([\\d.]+)$\\;version:\\1", + "icon": "Elementor.png", + "implies": "WordPress", + "website": "https://elementor.com" + }, "ELOG": { "cats": [ 19 diff --git a/src/icons/Elementor.png b/src/icons/Elementor.png new file mode 100644 index 0000000000000000000000000000000000000000..87fc23e014e907cd2999e32faf2c3c26d7c9b6c8 GIT binary patch literal 2564 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 T<;mA7I0C@J^qR?=%Q(WnLRGZl literal 0 HcmV?d00001 From 823a5477845b08b29df09ce9ecee9b83dfec3a87 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:08:29 +0000 Subject: [PATCH 15/67] Remove unused (#2501) * Remove Moxa - [Undetected](https://www.wappalyzer.com/technologies/moxa) - [Website](https://www.moxa.com/) says "Industrial IOT", unlikely to be detected/useful * Remove Sparql - [undetected](https://www.wappalyzer.com/technologies/sparql) - no way to be detected, must have been a dependency at some point in the past * Remove ARC Forum - [Undetected](https://www.wappalyzer.com/technologies/arc-forum) - The [website](AAA) says: "This site is about Arc, a new dialect of Lisp.", and also "Arc is unfinished. It's missing things you'd need to solve some types of problems. But it works well for basic web apps.". I dont think that anyone is using it in production * Remove C++, since it can't be detected * Remove Gazelle - What.cd is dead - The project isn't maintained anymore --- src/apps.json | 46 +--------------------------------------- src/icons/Arc Forum.png | Bin 384 -> 0 bytes src/icons/C++.png | Bin 743 -> 0 bytes src/icons/Moxa.png | Bin 497 -> 0 bytes 4 files changed, 1 insertion(+), 45 deletions(-) delete mode 100644 src/icons/Arc Forum.png delete mode 100644 src/icons/C++.png delete mode 100644 src/icons/Moxa.png diff --git a/src/apps.json b/src/apps.json index 4ff93980d..c714adc68 100644 --- a/src/apps.json +++ b/src/apps.json @@ -805,14 +805,6 @@ "script": "arastta\\.js", "website": "http://arastta.org" }, - "Arc Forum": { - "cats": [ - 2 - ], - "html": "ping\\.src = node\\.href;\\s+[^>]+\\s+}\\s+</script>", - "icon": "Arc Forum.png", - "website": "http://arclanguage.org" - }, "ArcGIS API for JavaScript": { "cats": [ 35 @@ -1435,13 +1427,6 @@ "script": "^https?://s\\d\\.buysellads\\.com/", "website": "http://buysellads.com" }, - "C++": { - "cats": [ - 27 - ], - "icon": "C++.png", - "website": "http://isocpp.org" - }, "CDN77": { "cats": [ 31 @@ -3441,20 +3426,7 @@ }, "website": "https://get.gaug.es" }, - "Gazelle": { - "cats": [ - 29 - ], - "html": [ - "<!-- Extra divs, for stylesheet developers to add imagery -->", - "<link rel=\"alternate\" type=\"application/rss+xml\" href=\"[^\"]+\" title=\"[^\"]+ - Gazelle Change Log\"" - ], - "js": { - "GazURL": "" - }, - "website": "https://whatcd.github.io/Gazelle/" - }, - "Gentoo": { + "Gentoo": { "cats": [ 28 ], @@ -6487,16 +6459,6 @@ }, "website": "http://movabletype.org" }, - "Moxa": { - "cats": [ - 37 - ], - "headers": { - "Server": "MoxaHttp(?:/([\\d.]+))?\\;version:\\1" - }, - "icon": "Moxa.png", - "website": "http://moxa.com" - }, "Mozard Suite": { "cats": [ 1 @@ -9220,12 +9182,6 @@ }, "website": "http://www.schillmania.com/projects/soundmanager2" }, - "Sparql": { - "cats": [ - 27 - ], - "website": "https://www.w3.org/TR/sparql11-overview/" - }, "Sphinx": { "cats": [ 4 diff --git a/src/icons/Arc Forum.png b/src/icons/Arc Forum.png deleted file mode 100644 index c01f4e466af4dc06132c4001cea5bf0b5a567778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmV-`0e}99P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0003;Nkl<ZC=~_3 zF-}!M6adh3=goZdn^-9tLq|nnLFp0<JF#{FZotMpum@LQYhghJok5Ht(F8QSdH0&2 zjq#EKFsCYr&^rLcy8h^6yf{7mo|&`=b2>h@-^2aA%S*khLblevetp%cIc5H(jp6pT z&d(1{P68Jf&dwYjT2~|uoj5qKZI2^b?;bs}ZGbtU3IOzN`*U^mzG@}LSgx;sXMW&_ z>OBwv0D9)#&CN$(x7%et%=wNZiU0thLkvI+9tZ$MQJ_G_QY+9Zu+0_B+}cuFS_;`} zhj`AHG45%s9P+m68+a`~xBinsvgghEuVXN1U`KA7Dr^xwa$zA@P}PwnNRk3TX+=>K zYz+Va0001>0RYeeIsgE4Bngsa0!)%5NfPv64;sbf)3V%yJ(H&d$(|q@&nST6NyGv+ e?y3SH_{D!k(UV_&QMph60000<MNUMnLSTY{hn%$l diff --git a/src/icons/C++.png b/src/icons/C++.png deleted file mode 100644 index bfb1f9856c161bbc8d825a3a4b5e2fd280a115a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmV<D0vP>?P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800086Nkl<ZSi|j? zPl!)Z6vuz>-S=jGjk3Tflku~V5(|@rA{!~Bgl0J#@@KD*$bzv!mSQKCCJRL&l9cSG z#=r5m*@&#nSWWnx>AX7by!+m7{N7I%bL-o=@7?pxIrrZ4@6~Fv<3Aq}a3Jvz>ss4J ztcuD;W=y5SDz2w#y2d%zAII@Q=mD^ocdJ?J@C>e0`Fs?f18-6ID-W!_0)z1ORAt1J z@+3*NqTs8i>?8CUc*^`WbkeMU=bMcx!?mOwVLQB?UgNmevD9UFQ?MLEj(~S+;32d2 zR}Lqm7hw}d`9L5l?5M+c(-@GH@E7j>x;gUWW=Dx9C{oznE|`hJys;$PJ<3PTU4{fY zb9zw$uWQOE6z?;;KU;E~3*mbpG{*=}th*0gSsEoUUN(2XJ;$Tv<4&D7Fmg<&K6e`7 zvE~Q)whrGXb>fWAg$%f($|reT<yq`oo*?*T&IwHu4&R7eZ@}sQFyM(AFu~(e!x(FB z*aR*h@D%hCeBXrfd{W+n%~KwmrhUxM^ZvA4rSO5P%un$CBJ-WOMidy}bbSwa1ctyp zFs^h+-}kGbTbMrtx4>;lQsA+Ks!$9$95UdpxdPv5d<W~2H0&j(+@sa2T2`7HP<+KW z;kKMRwQ=8z;P=qQCRapW`4-wCnUZT+Yxv@j6Ye)*cqR~r*~dM)vqgbe&*l!k7vdMq z6srcxf2aX(3L+pgtYH)vC8CB2-_lfk!<@n~vz8b|QJ`<=ZY34lVl-Y-jQlZ2BB7ud zHQgfw%Q2y~fu*^&0)iDNJqkWlQI4lIBnbTMH6&xu=hBo&v4Z|I>tArR^{qA}{=LqV zc1z;Dpd}lY%xFq+<$a-M*R&6XyR~8pc4@tc+R>EGv@K8Dp*-|sl9~?5)!O`HGCTg+ Z_zlsxkTqS(vS$DQ002ovPDHLkV1i5eZe9QY diff --git a/src/icons/Moxa.png b/src/icons/Moxa.png deleted file mode 100644 index 03a2e6f931765e9ab685480ef3ffc5f4aacecb73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmV<N0S^9&P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005FNkl<ZILpP8 z+be@%9LJv~rNku{l>fq|lz%{R&6RTDoO4VLkr`q$%pulHIg?m243lMzM9pDpUWYk^ zIfU5z^?2Ubn`OCK@zm3M@qB-u-}m?H`w|3p2>Bxb51!}!1Df}2sI!})+**d`<=KBZ z?`2=>C5M`gMbz6@(0;Hb07!2oNNX`jV;<6$#=kf9IcJX^MC%kxM_LLItXBvCnL!De zwg#k4P9KV(-Q5to^6-kby<Q#(Q+*)K`5>K@>_!Z$L<f`<(p`&m^Av@YAw*LSi~CqC z6s#9oj35oUh#l=j;;f$PN)S1u76AhdAng^{zCMTCI!}e!h|x9S{OO(*8}>J8=K_Rw zRKRg_fgH;Wa~df*_ylO=SaZAB-0_n=AoZC@HX2}ca|qW~Gk|VylL1pq;}lSgh#{4) zgQe3WCg2|K5Y<nYr7A@j9gQ^RBWrb9T4w6Pm;f058lk(2iA*Pll4zcDf~ZSC6d8z{ z=)&v!oAj1s9Hb625TsWMfU4bflv_=3dal^!zXCJsa-fA~gL}C33Dk&l2W4w>P&#Zs nlgI#mgCyng-~NT)0Ri0)w<lQunJ>UC00000NkvXXu0mjf)cf6T From 21a7bdef049da1d12aad9c4c058d3e937f888417 Mon Sep 17 00:00:00 2001 From: benzel <info@witt-it.de> Date: Sat, 24 Nov 2018 04:08:42 +0100 Subject: [PATCH 16/67] Updated new Translations (#2502) * Added german folder - copy en * Translations to german * Changed few translations Yesterday I may have missed some. Also I did some rethinking on better translations. * Update messages.json --- src/drivers/webextension/_locales/de/messages.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drivers/webextension/_locales/de/messages.json b/src/drivers/webextension/_locales/de/messages.json index 80cbfbecd..86c640c72 100644 --- a/src/drivers/webextension/_locales/de/messages.json +++ b/src/drivers/webextension/_locales/de/messages.json @@ -68,6 +68,6 @@ "categoryName55": { "message": "Buchhaltung" }, "categoryName56": { "message": "Cryptominer" }, "categoryName57": { "message": "Statischer Seitengenerator" }, - "categoryName58": { "message": "User Onboarding" }, - "categoryName59": { "message": "JavaScript Libraries" } + "categoryName58": { "message": "Benutzer-Einbindung" }, + "categoryName59": { "message": "JavaScript Bibliotheken" } } From f4b455c6a62aa7cad952eae7e1b605b918f9a488 Mon Sep 17 00:00:00 2001 From: Brad Johnson <resuni@users.noreply.github.com> Date: Fri, 23 Nov 2018 20:09:04 -0700 Subject: [PATCH 17/67] GoJS support (#2480) * GoJS support * Improved GoJS detection --- src/apps.json | 11 +++++++++++ src/icons/GoJS.png | Bin 0 -> 5709 bytes 2 files changed, 11 insertions(+) create mode 100644 src/icons/GoJS.png diff --git a/src/apps.json b/src/apps.json index c714adc68..77388080f 100644 --- a/src/apps.json +++ b/src/apps.json @@ -3618,6 +3618,17 @@ "icon": "GoAhead.png", "website": "http://embedthis.com/products/goahead/index.html" }, + "GoJS": { + "cats": [ + 25 + ], + "icon": "GoJS.png", + "website": "https://gojs.net/", + "js": { + "go.version": "(.*)\\;version:\\1", + "go.GraphObject": "" + } + }, "GoSquared": { "cats": [ 10, diff --git a/src/icons/GoJS.png b/src/icons/GoJS.png new file mode 100644 index 0000000000000000000000000000000000000000..5a91ade5468c9605aa169b6dd095499979ae846c GIT binary patch literal 5709 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 literal 0 HcmV?d00001 From 28d517236705c31df05cb332b1506db22f16beae Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:10:10 +0000 Subject: [PATCH 18/67] Improve fastly detection (#2494) This can be verified [here](https://www.computerworld.com/article/3288925/computer-hardware/as-bitcoin-values-slide-high-end-gpu-prices-drop-too.html) --- src/apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps.json b/src/apps.json index 77388080f..7575a8b38 100644 --- a/src/apps.json +++ b/src/apps.json @@ -3039,6 +3039,7 @@ "headers": { "Fastly-Debug-Digest": "", "Vary": "Fastly-SSL", + "x-via-fastly:": "", "X-Fastly-Request-ID": "" }, "icon": "Fastly.svg", From 161a65eefd628c08249af116a8e9e829f8f37e0c Mon Sep 17 00:00:00 2001 From: Chawye Hsu <chawyehsu@hotmail.com> Date: Sat, 24 Nov 2018 11:10:22 +0800 Subject: [PATCH 19/67] Correct discuz website (#2504) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 7575a8b38..0df9edf9d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2436,7 +2436,7 @@ "meta": { "generator": "Discuz! X([\\d\\.]+)?\\;version:\\1" }, - "website": "http://discuz.com" + "website": "http://www.discuz.net" }, "Disqus": { "cats": [ From ec56589c261df85892b0a936cc8627ba6c224a29 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:10:33 +0000 Subject: [PATCH 20/67] Add datadome detection (#2505) * Add datadome detection Datadome is a piece of crap branded as a "Bot management solution", used by a [lot of websites]( https://www.shodan.io/search?query=X-DataDome ), preventing people using vpn, Tor, or a web browser without javascript support (eg. used by some blind people) to access websites. * Detect datadome via scripts too --- src/apps.json | 16 ++++++++++++++++ src/icons/datadome.png | Bin 0 -> 4164 bytes 2 files changed, 16 insertions(+) create mode 100644 src/icons/datadome.png diff --git a/src/apps.json b/src/apps.json index 0df9edf9d..d29ec247c 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2344,6 +2344,22 @@ "icon": "Apple.svg", "website": "https://opensource.apple.com" }, + "Datadome": { + "cats": [ + 19 + ], + "cookies": { + "datadome": "" + }, + "script": "^https://ct\\.datadome\\.co/[a-z]\\.js$", + "headers": { + "X-DataDome": "", + "Server": "^DataDome$", + "X-DataDome-CID": "" + }, + "icon": "datadome.png", + "website": "https://datadome.co/" + }, "DataLife Engine": { "cats": [ 1 diff --git a/src/icons/datadome.png b/src/icons/datadome.png new file mode 100644 index 0000000000000000000000000000000000000000..9c19fb1d7f19b35f95a376e95c4d0031bab95164 GIT binary patch literal 4164 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 O0000<MNUMnLSTXnRqy%$ literal 0 HcmV?d00001 From 55ad0ad5155587cf7fab00f97ef933d648eadd87 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:10:46 +0000 Subject: [PATCH 21/67] Sphinx doesn't imply Python (#2506) Python is used to compile the markdown/ReST to html, but it doesn't mean that the page is _served_ using Python. --- src/apps.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index d29ec247c..faf207c60 100644 --- a/src/apps.json +++ b/src/apps.json @@ -9216,7 +9216,6 @@ ], "html": "Created using <a href=\"https?://sphinx-doc\\.org/\">Sphinx</a> ([.\\d+])+\\.\\;version:\\1", "icon": "Sphinx.png", - "implies": "Python", "js": { "DOCUMENTATION_OPTIONS": "" }, From a7e82d43a690d08bc3764fb0d28f78e4736d6cd9 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:10:59 +0000 Subject: [PATCH 22/67] PUNBB can now ne detected via javascript (#2507) This can be verified [here](https://www.teeworlds.com/forum/viewtopic.php?id=12547) --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index faf207c60..94ba91479 100644 --- a/src/apps.json +++ b/src/apps.json @@ -12323,6 +12323,9 @@ "cats": [ 2 ], + "js": { + "PUNBB": "" + }, "html": "Powered by <a href=\"[^>]+punbb", "icon": "punBB.png", "implies": "PHP", From 5a517c1cd81e9dee49e98cbaa81a261e055a2416 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:11:07 +0000 Subject: [PATCH 23/67] Add chevereto (#2508) * Add chevereto Chevereto is a pretty popular gallery hosting php thingy. The free version doesn't have many stars on github, but it's used by a lot of various torrent trackers as image hosting facility. See examples on [whatcms.com](https://whatcms.org/c/Chevereto) * Fix a typo --- src/apps.json | 13 +++++++++++++ src/icons/chevereto.png | Bin 0 -> 2505 bytes 2 files changed, 13 insertions(+) create mode 100644 src/icons/chevereto.png diff --git a/src/apps.json b/src/apps.json index 94ba91479..00c12725f 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1691,6 +1691,19 @@ "implies": "Python", "website": "http://www.cherrypy.org" }, + "Chevereto": { + "cats": [ + 7 + ], + "meta": { + "generator": "^Chevereto ?([0-9.]+)?$\\;version:\\1" + }, + "script": "/chevereto\\.js", + "html": "Powered by <a href=\"https?://chevereto\\.com\">", + "icon": "chevereto.png", + "implies": "PHP", + "website": "https://chevereto.com/" + }, "Chitika": { "cats": [ 36 diff --git a/src/icons/chevereto.png b/src/icons/chevereto.png new file mode 100644 index 0000000000000000000000000000000000000000..81e189814c0aa7ef496817b71795029b4ea28230 GIT binary patch literal 2505 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 TY6!g<00000NkvXXu0mjfPP4o_ literal 0 HcmV?d00001 From 5c32cc2c08f76c89aa3b90953a14837482c189ef Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:11:25 +0000 Subject: [PATCH 24/67] Add websocket detection (#2509) This can be tested on github.com --- src/apps.json | 11 +++++++++++ src/icons/websocket.png | Bin 0 -> 990 bytes 2 files changed, 11 insertions(+) create mode 100644 src/icons/websocket.png diff --git a/src/apps.json b/src/apps.json index 00c12725f..d14390431 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10704,6 +10704,17 @@ "icon": "Webs.png", "website": "http://webs.com" }, + "Websocket": { + "cats": [ + 19 + ], + "html": [ + "<link[^>]+rel=[\"']web-socket[\"']", + "<(?:link|a)[^>]+href=[\"']wss?://" + ], + "icon": "websocket.png", + "website": "https://en.wikipedia.org/wiki/WebSocket" + }, "WebsPlanet": { "cats": [ 1 diff --git a/src/icons/websocket.png b/src/icons/websocket.png new file mode 100644 index 0000000000000000000000000000000000000000..7d94f1073717ab8511cb229d460a86cc42d20f8c GIT binary patch literal 990 zcmWlY`#04G0KmVlM>j*#tfHD|8a<Zw(xPD`TRBu)PG@!OoGpet^Q!Aj$fFqZC}qf_ zP)Eacl6NQFVreaTKdK>gP*RD{?1#_i^A~(#?QE@8m9>-wK~S~XWx02uX8$9WUvO4s z*q9)QcG~UUZ-tYHKpiHBi81EwD_j?IJ%O=4n$F>=j*}eSH;LJXtC+tln4jbI3y!T| zex6?ynR|z19dBo7Ddyc<dYcJaPe&b-LxdP`_YwhXD38QT1D8cSf6P!j?rPjf;;0J$ zJ|x+O)>0~?3I3S2Ysm6Rw4k#A&!yZvPxeoEzfWrk)6Z$Y!3jOa2Pim-yDBqN+$rR& z1BLDcen`(PUW_s~OP`GPY6e=kdIJAd^xvT-nM+=j1~B{xXL)8{bIOFc9SpYe^Z{?C zxt@rufIKH6w&15l`aaV3QlCbMAr(=awqm%02qQ+i2;D&9H-v4Xqn12poE3;OCH`xU z>+-0EW6Md|P0M96zQ;$C`g9(*;ky!#CB&PN?MPc0ky{z<;np8?)-(Htq+K**Ff~HH zD^~(Zv#0MiLHbBOqW><@U-C~CqrLcifS)$^|72#8oS#YGPsK^jA3_?-s|jjTDe*%Z zLy14Bwp5>?Dvrzpr0n5YH_6{}rwISm<o-gw3k7a8WKx^LC2zVK`Q47PU>;QBwT$pj zXgtgL!^Cdqs)XZfDfXqii6ReNlqip&DU08}!%dl!U(lS#Uso9G=k`U82!Oft)K)=| z+h=2GzTcs7ynVa7$VgquQLk-h@eg8q3vY!yv7v6VQmpdQi-RHq@5?W@HMF*b8uynE z&1~r%$?+YzRrxBwEpYY9xY4i>xp$wv$vInpPybxn#1W0nM#c`2eL9;}!~3Fw{0BU= zM_U^{Us7=>%1zgFgW}p{Np(gBsTp=*BQZ{EHSdN0*jd%%a8slbE4K7WAIz53m6|G6 zZ_=GeOjDoMkXzLx)t1*XuDPABw5W8?HRB5hq{~H;F0BhOCTGOUg7XbmTo&SW<+5Z6 zD*fheni^&Sc5-G@)|$dVSD|o5QME2I`iZ{uy)6Sq51tA7)!i<sW;@gl)`g635F#EX z6pJK%r*&2Zm8_X~`l;AQcF06MeL{QKL81GrjrWZULl0sWUMGDLs~Fl|W}SIX))Q)< zYiL!padBe2NWmp*VqIQYuv%h#xL$65v%X}8-KL%f>kkaP9F-lmbzk^au(7hWEVXb9 F{}10wO%(tD literal 0 HcmV?d00001 From 8574d27a3495cf924b6a41e83777186afe359a6e Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:11:36 +0000 Subject: [PATCH 25/67] Add jquery-pjax detection (#2510) It's a [fairly popular](https://github.com/defunkt/jquery-pjax) library, used by github.com --- src/apps.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/apps.json b/src/apps.json index d14390431..7ca6c7a55 100644 --- a/src/apps.json +++ b/src/apps.json @@ -11890,6 +11890,23 @@ "script": "jquery[.-]mobile(?:-([\\d.]))?(?:\\.min)?\\.js(?:\\?ver=([\\d.]+))?\\;version:\\1?\\1:\\2", "website": "https://jquerymobile.com" }, + "jQuery-pjax": { + "cats": [ + 26 + ], + "implies": "jQuery", + "meta": { + "pjax-timeout": "", + "pjax-replace": "", + "pjax-push": "" + }, + "js": { + "jQuery.pjax": "" + }, + "script": "jquery[.-]pjax(?:-([\\d.]))?(?:\\.min)?\\.js(?:\\?ver=([\\d.]+))?\\;version:\\1?\\1:\\2", + "html": "<div[^>]+data-pjax-container", + "website": "https://github.com/defunkt/jquery-pjax" + }, "jQuery Sparklines": { "cats": [ 25 From a7267598807ed994ecdfb46ff7f1d28670564ff2 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:11:46 +0000 Subject: [PATCH 26/67] Add ahoy detection (#2511) This is a [pretty popular](https://github.com/ankane/ahoy) analytics for RoR, used by [instacart](https://www.instacart.com) for example Unfortunately, it doesn't have a logo :/ --- src/apps.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/apps.json b/src/apps.json index 7ca6c7a55..5a0c1bae4 100644 --- a/src/apps.json +++ b/src/apps.json @@ -397,6 +397,20 @@ "script": "shop-static\\.afterbuy\\.de", "website": "http://www.afterbuy.de" }, + "Ahoy": { + "cats": [ + 10 + ], + "js": { + "ahoy": "" + }, + "cookies": { + "ahoy_track": "", + "ahoy_visit": "", + "ahoy_visitor": "" + }, + "website": "https://github.com/ankane/ahoy" + }, "Aircall": { "cats": [ 52 From 2c90e40f83deace38666d56d364f2538c7e5e319 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:12:04 +0000 Subject: [PATCH 27/67] Improve a bit RoR detection (#2512) RoR [usually](https://www.google.com/search?hl=en&q=_session_id%20cookie) sets a _session_id cookie --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index 5a0c1bae4..d2c14335f 100644 --- a/src/apps.json +++ b/src/apps.json @@ -8387,6 +8387,9 @@ "meta": { "csrf-param": "^authenticity_token$\\;confidence:50" }, + "cookies": { + "_session_id": "\\;confidence:75" + }, "script": "/assets/application-[a-z\\d]{32}/\\.js\\;confidence:50", "website": "https://rubyonrails.org" }, From c6f328992215648480eab1e912dd9eba6201409f Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:12:12 +0000 Subject: [PATCH 28/67] Improve a bit bugsnag detection (#2513) According to the [documentation](https://docs.bugsnag.com/platforms/browsers/v3/) --- src/apps.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index d2c14335f..d5ba06262 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1370,9 +1370,11 @@ ], "icon": "BugSnag.png", "js": { - "Bugsnag": "" + "Bugsnag": "", + "bugsnag": "", + "bugsnagClient": "" }, - "script": "bugsnag.*\\.js", + "script": "/bugsnag.*\\.js", "website": "http://bugsnag.com" }, "Bugzilla": { From 66719a285abb20f95b50a00a853241825dcaf69b Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:12:21 +0000 Subject: [PATCH 29/67] Improve Chartjs detection (#2514) Accordingly to the [documentation]( https://www.chartjs.org/docs/latest/charts/doughnut.html ) --- src/apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps.json b/src/apps.json index d5ba06262..3a0a9de2c 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1662,6 +1662,7 @@ "icon": "Chart.js.svg", "js": { "Chart": "\\;confidence:50", + "Chart.defaults.doughnut": "", "chart.ctx.bezierCurveTo": "" }, "script": [ From f37623b30f31dc261685ec1413e1fa05a87cf8d2 Mon Sep 17 00:00:00 2001 From: Mostafa Soufi <mostafa.soufi@hotmail.com> Date: Sat, 24 Nov 2018 06:42:43 +0330 Subject: [PATCH 30/67] Add WP-Statistics (#2515) * Added WP-Statistics * Added the icon --- src/apps.json | 11 +++++++++++ src/icons/WP-Statistics.png | Bin 0 -> 1672 bytes 2 files changed, 11 insertions(+) create mode 100644 src/icons/WP-Statistics.png diff --git a/src/apps.json b/src/apps.json index 3a0a9de2c..f96a478cc 100644 --- a/src/apps.json +++ b/src/apps.json @@ -11345,6 +11345,17 @@ "implies": "WordPress", "website": "http://yoast.com" }, + "WP-Statistics": { + "cats": [ + 59 + ], + "html": [ + "<!-- Analytics by WP-Statistics v([\\d.]+) -\\;version:\\1" + ], + "icon": "WP-Statistics.png", + "implies": "WordPress", + "website": "https://wp-statistics.com" + }, "YouTrack": { "cats": [ 13 diff --git a/src/icons/WP-Statistics.png b/src/icons/WP-Statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..22d1c580f3863e3940700ee5ac96e885268d35f8 GIT binary patch literal 1672 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 Sg`x=n0000<MNUMnLSTYURu;$r literal 0 HcmV?d00001 From e7d7003225f14d60181eda2eaa321400e5f439ee Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:12:58 +0000 Subject: [PATCH 31/67] Detect wordpress sites, even if they're using amp (#2516) This can be tested [here](view-source:https://www.konbini.com/fr/entertainment-2/tommy-wiseau-rejoue-joker-cest-mauvais-the-room/amp/) --- src/apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps.json b/src/apps.json index f96a478cc..a921c4f74 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10967,6 +10967,7 @@ ], "html": [ "<link rel=[\"']stylesheet[\"'] [^>]+wp-(?:content|includes)", + "<div[^>]*class=[\"']amp-wp-", "<link[^>]+s\\d+\\.wp\\.com" ], "icon": "WordPress.svg", From 19ea96d6a1a921edb84fb43e3df9c8ba8a53cb0a Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:13:13 +0000 Subject: [PATCH 32/67] Fix Sphinx version detection (#2517) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index a921c4f74..8ca588de0 100644 --- a/src/apps.json +++ b/src/apps.json @@ -9247,7 +9247,7 @@ "cats": [ 4 ], - "html": "Created using <a href=\"https?://sphinx-doc\\.org/\">Sphinx</a> ([.\\d+])+\\.\\;version:\\1", + "html": "Created using <a href=\"https?://sphinx-doc\\.org/\">Sphinx</a> ([0-9.]+)\\.\\;version:\\1", "icon": "Sphinx.png", "js": { "DOCUMENTATION_OPTIONS": "" From 9c2835e577dc935aaf5af043b81a1c69e1cbd1a6 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:13:34 +0000 Subject: [PATCH 33/67] Refactor a bit chartjs detection (#2518) --- src/apps.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/apps.json b/src/apps.json index 8ca588de0..ef741967a 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1666,13 +1666,12 @@ "chart.ctx.bezierCurveTo": "" }, "script": [ - "Chart(?:\\.bundle)?(?:\\.min)?\\.js\\;confidence:50", + "/Chart(?:\\.bundle)?(?:\\.min)?\\.js\\;confidence:75", "chartjs\\.org/dist/([\\d.]+(?:-[^/]+)?|master|latest)/Chart.*\\.js\\;version:\\1", "cdnjs\\.cloudflare\\.com/ajax/libs/Chart\\.js/([\\d.]+(?:-[^/]+)?)/Chart.*\\.js\\;version:\\1", - "cdn\\.jsdelivr\\.net/npm/chart\\.js@([\\d.]+(?:-[^/]+)?|latest)/dist/Chart.*\\.js\\;version:\\1", - "cdn\\.jsdelivr\\.net/gh/chartjs/Chart\\.js@([\\d.]+(?:-[^/]+)?|latest)/dist/Chart.*\\.js\\;version:\\1" + "cdn\\.jsdelivr\\.net/(?:npm|gh/chartjs)/chart\\.js@([\\d.]+(?:-[^/]+)?|latest)/dist/Chart.*\\.js\\;version:\\1" ], - "website": "http://www.chartjs.org" + "website": "https://www.chartjs.org" }, "Chartbeat": { "cats": [ From ea0aba1f3a44e56689b98609d2b1b6e57be30b99 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:13:59 +0000 Subject: [PATCH 34/67] Remove some superfluous escaping (#2519) * Remove some superfluous escaping - There is no need to escape . or - outside of a [] - (?:-|.) can be replaced with [.-] - Simplify some convoluted regexp * Fix some mistakes * Remove even more --- src/apps.json | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/apps.json b/src/apps.json index ef741967a..0e72c1e49 100644 --- a/src/apps.json +++ b/src/apps.json @@ -634,14 +634,11 @@ 18 ], "icon": "AngularJS.svg", - "implies": "AngularJS", + "implies": "AngularJS", "js": { "ngMaterial": "" }, - "script": [ - "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular-material(?:\\.min)?\\.js\\;version:\\1", - "angular-material.*\\.js" - ], + "script": "/([\\d.rc-]+)?/angular-material(?:\\.min)?\\.js\\;version:\\1", "website": "https://material.angularjs.org" }, "AngularDart": { @@ -673,8 +670,8 @@ "angular.version.full": "(.*)\\;version:\\1" }, "script": [ - "angular(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", - "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular(?:\\.min)?\\.js\\;version:\\1", + "angular[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "/([\\d.]+(?:-?rc[.\\d]*)*)/angular(?:\\.min)?\\.js\\;version:\\1", "angular.*\\.js" ], "website": "https://angularjs.org" @@ -1287,7 +1284,7 @@ }, "script": [ "twitter\\.github\\.com/bootstrap", - "bootstrap(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "bootstrap[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "(?:/([\\d.]+))?(?:/js)?/bootstrap(?:\\.min)?\\.js\\;version:\\1" ], "website": "https://getbootstrap.com" @@ -2586,7 +2583,7 @@ "icon": "DokuWiki.png", "implies": "PHP", "meta": { - "generator": "^DokuWiki( Release [\\-\\d]+)?\\;version:\\1" + "generator": "^DokuWiki( Release [\\d-]+)?\\;version:\\1" }, "website": "https://www.dokuwiki.org" }, @@ -2768,7 +2765,7 @@ 22 ], "headers": { - "Server": "ELOG HTTP( \\d[\\-\\d\\.]+)?\\;version:\\1" + "Server": "ELOG HTTP ?([\\d.-]+)?\\;version:\\1" }, "icon": "ELOG.png", "implies": "ELOG", @@ -2932,7 +2929,7 @@ 27 ], "headers": { - "Server": "Erlang( OTP/(?:[\\-\\d\\.ABR]+))?\\;version:\\1" + "Server": "Erlang( OTP/(?:[\\d.ABR-]+))?\\;version:\\1" }, "icon": "Erlang.png", "website": "http://www.erlang.org" @@ -4189,7 +4186,7 @@ ], "html": "<svg[^>]*><desc>Created with Highstock ([\\d.]*)\\;version:\\1", "icon": "Highcharts.png", - "script": "highstock(?:\\-|\\.)?([\\d\\.]*\\d).*\\.js\\;version:\\1", + "script": "highstock[.-]?([\\d\\.]*\\d).*\\.js\\;version:\\1", "website": "http://highcharts.com/products/highstock" }, "Hinza Advanced CMS": { @@ -4221,7 +4218,7 @@ "Hogan": "" }, "script": [ - "hogan-(?:-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "hogan-[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "([\\d.]+)/hogan(?:\\.min)?\\.js\\;version:\\1" ], "website": "https://twitter.github.io/hogan.js/" @@ -5294,7 +5291,7 @@ "meta": { "laterpay:connector:callbacks:on_user_has_access": "deobfuscateText" }, - "script": "https?://connectormwi\\.laterpay\\.net/([0-9.]+)[a-zA-z\\-]*/live/[\\w-]+\\.js\\;version:\\1", + "script": "https?://connectormwi\\.laterpay\\.net/([0-9.]+)[a-zA-z-]*/live/[\\w-]+\\.js\\;version:\\1", "website": "https://www.laterpay.net/" }, "Lazy.js": { @@ -6356,7 +6353,7 @@ ], "icon": "Moment.js.svg", "implies": "Moment.js", - "script": "moment-timezone(?:\\-data)?(?:\\.min)?\\.js", + "script": "moment-timezone(?:-data)?(?:\\.min)?\\.js", "website": "http://momentjs.com/timezone/" }, "Moment.js": { @@ -8138,7 +8135,7 @@ "react.version": "(.*)\\;version:\\1" }, "script": [ - "react(?:\\-with\\-addons)?(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "react(?:-with-addons)?[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "/([\\d.]+)/react(?:\\.min)?\\.js\\;version:\\1", "react.*\\.js" ], @@ -10559,7 +10556,7 @@ "Vue.version": "(.*)\\;version:\\1" }, "script": [ - "vue(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "vue[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "(?:/([\\d.]+))?/vue(?:\\.min)?\\.js\\;version:\\1" ], "website": "http://vuejs.org" @@ -11077,7 +11074,7 @@ "XRegExp.version": "(.*)\\;version:\\1" }, "script": [ - "xregexp(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "xregexp[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "/([\\d.]+)/xregexp(?:\\.min)?\\.js\\;version:\\1", "xregexp.*\\.js" ], @@ -11380,7 +11377,7 @@ "cats": [ 18 ], - "html": "<!-- ZK [\\.\\d\\s]+-->", + "html": "<!-- ZK [.\\d\\s]+-->", "icon": "ZK.png", "implies": "Java", "script": "zkau/", @@ -11889,7 +11886,7 @@ "jQuery.fn.jquery": "([\\d.]+)\\;version:\\1" }, "script": [ - "jquery(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "jquery[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "/([\\d.]+)/jquery(?:\\.min)?\\.js\\;version:\\1", "jquery.*\\.js(?:\\?ver(?:sion)?=([\\d.]+))?\\;version:\\1" ], @@ -11956,7 +11953,7 @@ "jQuery.ui.version": "(.*)\\;version:\\1" }, "script": [ - "jquery-ui(?:-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "jquery-ui[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "([\\d.]+)/jquery-ui(?:\\.min)?\\.js\\;version:\\1", "jquery-ui.*\\.js" ], @@ -12241,7 +12238,7 @@ "cats": [ 25 ], - "html": "<div id=\"particles\\-js\">", + "html": "<div id=\"particles-js\">", "js": { "particlesJS": "" }, From d39b665311123f2dd0592a20fc31b089570af025 Mon Sep 17 00:00:00 2001 From: Adam Dutton <adam.dutton@volusion.com> Date: Fri, 23 Nov 2018 21:14:38 -0600 Subject: [PATCH 35/67] Separate Volusion into two technologies (V1 and V2) (#2520) * Separating Volusion to V1 and V2 * Adding new Volusion logo icon SVG * Removing old PNG file * Added `implies` fields Tech implications are changing and we'll update Wappalyzer after changes are made. --- src/apps.json | 16 +++++++++++++--- src/icons/Volusion.png | Bin 334 -> 0 bytes src/icons/Volusion.svg | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) delete mode 100644 src/icons/Volusion.png create mode 100644 src/icons/Volusion.svg diff --git a/src/apps.json b/src/apps.json index 0e72c1e49..53052e61b 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10534,17 +10534,27 @@ "script": "visualpath[^/]*\\.trackset\\.it/[^/]+/track/include\\.js", "website": "http://www.trackset.com/web-analytics-software/visualpath" }, - "Volusion": { + "Volusion (V1)": { "cats": [ 6 ], "html": "<link [^>]*href=\"[^\"]*/vspfiles/", - "icon": "Volusion.png", + "icon": "Volusion.svg", + "implies": "Microsoft ASP.NET", "js": { "volusion": "" }, "script": "/volusion\\.js(?:\\?([\\d.]*))?\\;version:\\1", - "website": "http://volusion.com" + "website": "https://www.volusion.com" + }, + "Volusion (V2)": { + "cats": [ + 6 + ], + "html": "<body [^>]*data-vn-page-name", + "icon": "Volusion.svg", + "implies": "AngularJS", + "website": "https://www.volusion.com" }, "Vue.js": { "cats": [ diff --git a/src/icons/Volusion.png b/src/icons/Volusion.png deleted file mode 100644 index 20e6d109a822f959a4eb346ab9abbf2a6d956252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001rP)t-s00003 zLTdm2{{}>C3`uXAv%`_Cz8h3{vc=Ko?eQK~da1w6xXRV``1(O{k2`FOM01fcW`-nM zeHBl2-skKpUxB8)%D&FnS%RHtj;7e+=<4tDwa3#|fSXNvmTQow{Qdofq_^$z^dVS$ zcbTqklBuJ*$r4R-2}W)>YKmoxq?E6~N_UiipR^LQYHR=i00DGTPE!Ct=GbNc0044H zL_t(|UVYCs76UN=15uCcWe77f-~W1P{IYfvb^6^HLp1+G$&%T^g@8@99C)x343MiR z0hg{+4Gl0Fs|KcO=3oF?simi;j|bLDsI=h+TkXpIfe!5Pbk1!6T)5r{;hsI75x}c( gF}&+f2mf--7qemoM&5s@MF0Q*07*qoM6N<$f)JgQcK`qY diff --git a/src/icons/Volusion.svg b/src/icons/Volusion.svg new file mode 100644 index 000000000..34dd13831 --- /dev/null +++ b/src/icons/Volusion.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256"><path fill="#8759F2" d="M128.928 163.067L81.066 80.152H32.898c-19.702.055-31.987 21.368-22.187 38.44L82.65 243.22c9.787 16.957 34.5 17.13 44.415-.023l46.277-80.15c-9.912 17.165-34.637 16.953-44.415.02z"/><path fill="#FF3E80" d="M176.806 80.152h-95.75l47.862 82.918c9.788 16.96 34.5 17.13 44.415-.023l25.665-44.422c9.908-17.17-2.642-38.475-22.192-38.473z"/><path fill="#FFC300" d="M223.083 0H79.176C59.473.055 47.188 21.367 56.988 38.44c0 .02 24.078 41.71 24.078 41.71h95.75c19.775 0 32 21.485 22.185 38.475l46.277-80.15C255.101 21.445 242.808 0 223.083 0z"/><path fill="#00D4E6" d="M56.998 38.442a25.638 25.638 0 0 1 .025-25.612L10.748 92.977A25.638 25.638 0 0 1 32.911 80.15h48.165L56.998 38.442z"/></svg> \ No newline at end of file From c9a5576c72dc46b3f1e6e343502d9d4453f52ddf Mon Sep 17 00:00:00 2001 From: Kyle Lawson <klawson3@babson.edu> Date: Fri, 23 Nov 2018 22:15:23 -0500 Subject: [PATCH 36/67] added LOU to apps.json (#2522) * added LOU to apps.json * removed implies field from LOU --- src/apps.json | 8 ++++++++ src/icons/LOU.png | Bin 0 -> 1685 bytes 2 files changed, 8 insertions(+) create mode 100644 src/icons/LOU.png diff --git a/src/apps.json b/src/apps.json index 53052e61b..a68082de7 100644 --- a/src/apps.json +++ b/src/apps.json @@ -5591,6 +5591,14 @@ "implies": "Java", "website": "http://www-01.ibm.com/software/lotus/products/domino" }, + "LOU": { + "cats": [ + 58 + ], + "icon": "LOU.png", + "script": "cdn\\.louassist\\.com*", + "website": "https://www.louassist.com" + }, "Lua": { "cats": [ 27 diff --git a/src/icons/LOU.png b/src/icons/LOU.png new file mode 100644 index 0000000000000000000000000000000000000000..c2836cab445c17b77ce4e0902d8b70aaf20427e3 GIT binary patch literal 1685 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 Mp)A_h!QA}+0fF4&^Z)<= literal 0 HcmV?d00001 From e7888170940ff18d9da8f7cc11bd8a59b163b0b1 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:15:44 +0000 Subject: [PATCH 37/67] Improve dreamweaver (#2524) --- src/apps.json | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/apps.json b/src/apps.json index a68082de7..835aae55b 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2659,9 +2659,14 @@ "cats": [ 20 ], - "html": "(?:<!--[^>]*(?:InstanceBeginEditable|Dreamweaver([^>]+)target|DWLayoutDefaultTable)|function MM_preloadImages\\(\\) \\{)\\;version:\\1", - "icon": "DreamWeaver.png", - "website": "http://www.adobe.com/products/dreamweaver" + "html": "<!--[^>]*(?:InstanceBeginEditable|Dreamweaver([^>]+)target|DWLayoutDefaultTable)\\;version:\\1", + "js": { + "MM_showMenu": "", + "MM_preloadImages": "", + "MM_showHideLayers": "" + }, + "icon": "DreamWeaver.png", + "website": "https://www.adobe.com/products/dreamweaver.html" }, "Drupal": { "cats": [ From 2b5c26db291436c29011b6d98f2ecd56155c280b Mon Sep 17 00:00:00 2001 From: kkadosh <32873649+kkadosh@users.noreply.github.com> Date: Sat, 24 Nov 2018 04:16:06 +0100 Subject: [PATCH 38/67] Improve gatsby fingerprinting (#2525) * Improve gatsby fingerprinting * Fix typo * Improve the regex --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index 835aae55b..5990395c0 100644 --- a/src/apps.json +++ b/src/apps.json @@ -3454,6 +3454,9 @@ "<div id=\"___gatsby\">", "<style id=\"gatsby-inlined-css\">" ], + "meta": { + "generator": "^Gatsby(?: ([0-9.]+))?$\\;version:\\1" + }, "icon": "Gatsby.svg", "implies": [ "React", From 6681f69b7fb38860d677b0ffac33dfc3e6ae70f7 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:17:39 +0000 Subject: [PATCH 39/67] Improve angularjs detection via html (#2526) --- src/apps.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/apps.json b/src/apps.json index 5990395c0..2a0dd1055 100644 --- a/src/apps.json +++ b/src/apps.json @@ -665,6 +665,10 @@ "AngularDart" ], "icon": "AngularJS.svg", + "html": [ + "<(?:div|html)[^>]+ng-app=", + "<ng-app" + ], "js": { "angular": "", "angular.version.full": "(.*)\\;version:\\1" From 1e565706af9086abfdc1f613f5a96856f61d7811 Mon Sep 17 00:00:00 2001 From: kkadosh <32873649+kkadosh@users.noreply.github.com> Date: Sat, 24 Nov 2018 04:17:57 +0100 Subject: [PATCH 40/67] Improve tiny mce detection (#2527) * Improve tiny mce detection * Fix regex * Dummy commit :) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 2a0dd1055..372baee41 100644 --- a/src/apps.json +++ b/src/apps.json @@ -9904,7 +9904,7 @@ "js": { "tinyMCE.majorVersion": "([\\d.]+)\\;version:\\1" }, - "script": "/tinymce(?:\\.min)?\\.js", + "script": "/tiny_?mce(?:\\.min)?\\.js", "website": "http://tinymce.com" }, "Titan": { From da02555174e9965e7df889fdb079bed5f79e744f Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:18:14 +0000 Subject: [PATCH 41/67] Improve a bit dokuwiki detection (#2528) This can be checked here : view-source:https://wiki.php.net/todo/php73 --- src/apps.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/apps.json b/src/apps.json index 372baee41..de862b384 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2584,6 +2584,10 @@ "cookies": { "DokuWiki": "" }, + "html": [ + "<div[^>]+id=\"dokuwiki__>", + "<a[^>]+href=\"#dokuwiki__" + ], "icon": "DokuWiki.png", "implies": "PHP", "meta": { From bda15e50fd274a1e1ace9a50227c0127a27a7688 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:23:11 +0000 Subject: [PATCH 42/67] Improve phpwind detection (#2529) This can be tested [here](view-source:http://s.erji.hk/) and [here](view-source:http://bbs.mydigit.cn/). --- src/apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index de862b384..39ecb7728 100644 --- a/src/apps.json +++ b/src/apps.json @@ -12386,11 +12386,11 @@ 1, 2 ], - "html": "Powered by <a href=\"[^\"]+phpwind\\.net", + "html": "(?:Powered|Code) by <a href=\"[^\"]+phpwind\\.net", "icon": "phpwind.png", "implies": "PHP", "meta": { - "generator": "^phpwind" + "generator": "^phpwind(?: v([0-9-]+))?\\;version:\\1" }, "website": "https://www.phpwind.net" }, From 29d2d379ec93a1e9ea3bf41bb5ed8727f82d799b Mon Sep 17 00:00:00 2001 From: Nathan Pinciak <natepinciak@live.com> Date: Fri, 23 Nov 2018 22:23:39 -0500 Subject: [PATCH 43/67] Shopline and 91app detection (#2532) --- src/apps.json | 18 ++++++++++++++++++ src/icons/91app.png | Bin 0 -> 16267 bytes src/icons/shopline.png | Bin 0 -> 6316 bytes 3 files changed, 18 insertions(+) create mode 100644 src/icons/91app.png create mode 100644 src/icons/shopline.png diff --git a/src/apps.json b/src/apps.json index 39ecb7728..1a752f75b 100644 --- a/src/apps.json +++ b/src/apps.json @@ -15,6 +15,14 @@ "script": "1c-bitrix", "website": "http://www.1c-bitrix.ru" }, + "91App": { + "cats": [ + 6 + ], + "icon": "91app.png", + "script": "https\\:\/\/track\\.91app\\.io\/track\\.js\\?", + "website": "https://www.91app.com/" + }, "3dCart": { "cats": [ 1, @@ -8888,6 +8896,16 @@ }, "website": "http://shopify.com" }, + "Shopline": { + "cats": [ + 6 + ], + "icon": "shopline.png", + "meta": { + "og:image":"https\\:\/\/img\\.shoplineapp\\.com" + }, + "website": "https://shoplineapp.com/" + }, "Shoptet": { "cats": [ 6 diff --git a/src/icons/91app.png b/src/icons/91app.png new file mode 100644 index 0000000000000000000000000000000000000000..3963238b1b19bafcd4d578dc72f6551f117d6d8f GIT binary patch literal 16267 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 literal 0 HcmV?d00001 diff --git a/src/icons/shopline.png b/src/icons/shopline.png new file mode 100644 index 0000000000000000000000000000000000000000..ebdb09d1486d8a31109349f0dd89a12aafed08d3 GIT binary patch literal 6316 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 literal 0 HcmV?d00001 From 5b420b67f12003f82b39533991943d8b0363bd00 Mon Sep 17 00:00:00 2001 From: Avaroth <klemens.forster@hotmail.de> Date: Sat, 24 Nov 2018 04:25:24 +0100 Subject: [PATCH 44/67] added Website Creator CMS (#2537) --- src/apps.json | 16 ++++++++++++++++ src/icons/WebsiteCreator.png | Bin 0 -> 18990 bytes 2 files changed, 16 insertions(+) create mode 100644 src/icons/WebsiteCreator.png diff --git a/src/apps.json b/src/apps.json index 1a752f75b..58fe83f9d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10801,6 +10801,22 @@ "url": "/websale7/", "website": "http://websale.de" }, + "Website Creator": { + "cats": [ + 1 + ], + "icon": "WebsiteCreator.png", + "implies": [ + "PHP", + "MySQL", + "Vue.js" + ], + "meta": { + "generator": "Website Creator by hosttech", + "wsc_rendermode": "" + }, + "website": "https://www.hosttech.ch/websitecreator" + }, "WebsiteBaker": { "cats": [ 1 diff --git a/src/icons/WebsiteCreator.png b/src/icons/WebsiteCreator.png new file mode 100644 index 0000000000000000000000000000000000000000..3c25e14aae94a4507e642156a0b1619bbf216bc6 GIT binary patch literal 18990 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 a>CN%F_u#;{KJfRZm9)5mSe1yr|NjLdT^cF? literal 0 HcmV?d00001 From ace60ab1d298d988bf1ed5121873bf11918722a9 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:26:13 +0000 Subject: [PATCH 45/67] Vastly improve rainloop detection (#2541) - Remove two super-slow regexps - Tighten some regexps - Add more patterns I tested this PR on Wappalyzer's [top10](https://www.wappalyzer.com/technologies/rainloop), and on the [official demo](https://mail.rainloop.net/). --- src/apps.json | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/apps.json b/src/apps.json index 58fe83f9d..c85903728 100644 --- a/src/apps.json +++ b/src/apps.json @@ -8044,19 +8044,22 @@ 30 ], "headers": { - "Server": "RainLoop" + "Server": "^RainLoop" }, "html": [ - "<meta [^>]*(?:content=\"([^\"]+)[^>]+ id=\"rlAppVersion\"|id=\"rlAppVersion\"[^>]+ content=\"([^\"]+))\\;version:\\1?\\1:\\2", - "<link[^>]* href=\"[^\"]*rainloop/v/([^/]+)\\;version:\\1" + "<link[^>]href=\"rainloop/v/([0-9.]+)/static/apple-touch-icon\\.png/>\\;version:\\1" ], + "meta": { + "rlAppVersion": "^([0-9.]+)$\\;version:\\1" + }, "icon": "RainLoop.png", "implies": "PHP", "js": { + "rainloopI18N": "", "rainloop": "" }, - "script": "rainloop/v/([^/]+)\\;version:\\1", - "website": "http://rainloop.net" + "script": "^rainloop/v/([0-9.]+)/\\;version:\\1", + "website": "https://www.rainloop.net/" }, "Rakuten DBCore": { "cats": [ From ad5bba7b25f6e07eb028be79715f49634fbf1d65 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:26:34 +0000 Subject: [PATCH 46/67] Optimize moguta's detection regexp (#2542) --- src/apps.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index c85903728..d3e47a8f7 100644 --- a/src/apps.json +++ b/src/apps.json @@ -6338,10 +6338,11 @@ 1, 6 ], - "html": "(?:<script|link)[^>]*(?:src=|href=)[\"'][^\"]*mg-(?:core|plugins|templates)", + "html": "<link[^>]+href=[\"'][^\"]+mg-(?:core|plugins|templates)/", + "script": "mg-(?:core|plugins|templates)/", "icon": "Moguta.CMS.png", "implies": "PHP", - "website": "http://moguta.ru" + "website": "https://moguta.ru" }, "MoinMoin": { "cats": [ From 32fc8021ad7d94f2709a7017a812508581f1f57c Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:26:49 +0000 Subject: [PATCH 47/67] Remove a useless regexp for segment's detection (#2543) --- src/apps.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index d3e47a8f7..e3c2736aa 100644 --- a/src/apps.json +++ b/src/apps.json @@ -8706,13 +8706,12 @@ "cats": [ 10 ], - "html": "<script[\\s\\S]*cdn\\.segment\\.com/analytics\\.js[\\s\\S]*script>", "icon": "Segment.png", "js": { "analytics": "" }, "script": "cdn\\.segment\\.com/analytics\\.js", - "website": "http://segment.com" + "website": "https://segment.com" }, "Select2": { "cats": [ From 8c452182a0f36e3ced7f8c8e66abd94c33f31504 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:27:02 +0000 Subject: [PATCH 48/67] Remove NOIX (#2544) - The official website is dead: http://www.noix.com.br/ - 0 detections: https://www.wappalyzer.com/technologies/noix --- src/apps.json | 8 -------- src/icons/NOIX.png | Bin 430 -> 0 bytes 2 files changed, 8 deletions(-) delete mode 100644 src/icons/NOIX.png diff --git a/src/apps.json b/src/apps.json index e3c2736aa..4c838fc65 100644 --- a/src/apps.json +++ b/src/apps.json @@ -6630,14 +6630,6 @@ "icon": "Plataforma NEO.svg", "website": "http://www.jetecommerce.com.br/" }, - "NOIX": { - "cats": [ - 19 - ], - "html": "(?:<[^>]+(?:src|href)=[^>]*/media/noix|<!-- NOIX)", - "icon": "NOIX.png", - "website": "http://www.noix.com.br/tecnologias/joomla" - }, "NVD3": { "cats": [ 25 diff --git a/src/icons/NOIX.png b/src/icons/NOIX.png deleted file mode 100644 index ae6f9fee616eb87866ac3f7d72a82df95418e4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004XNkl<ZILm$0 z!7D{U6vy$KC`AyY*icHOBq~KIDk~*LcBsJ4U!YW!gpGtsq*y&sL@J7;2q{H8c@+f} zNI~&E`n{T7m+Dh@&YU^ToSEx=k9%H(a*W{!A)F$B79>XIyMq)A;tt<F-m#7{zXBOp zc9P$)g$1nP+L^QO8n-|!W}Ji-R6E<X`F!-@RXITvg$p#|LlbjI^65)hn^R=kihF91 z1<sI-Xf>=*ixSX{VvVPi|A2Z6Tq-c2giM^M`?-k6IodT}g%_=v_na*?DIp6xxWz6? zv4Li%;X$oA@GD@)*hVcTaDyu}I0Y`W=From4SJQ3qa)Z &GD;Q|$SR4m}>+J37c zT}|r=UlY<)yhP(6<y(<v3v@bfU<6VBTw|@eZ@G(h<rYlFs)ApbM4q<qsbDHPoELeI zO7|(-OWSvL64FEI$0+ukIoo=x-_K-sK8vS6ex^_LsqU}8(Zrz(o4USdo%tBUD2VLK Y4~PE}Id?khYXATM07*qoM6N<$g3ckosQ>@~ From f1773a68c08605ce778f40da2d71f1dba8622031 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:27:15 +0000 Subject: [PATCH 49/67] Add ckan version detection (#2546) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 4c838fc65..242335ccc 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1757,7 +1757,7 @@ "PostgreSQL" ], "meta": { - "generator": ".*ckan.*" + "generator": "^ckan ?([0-9.]+)$\\;version:\\1" }, "website": "http://ckan.org/" }, From 0bc4ef7915854adafc238129536e035bbacc2a61 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:27:28 +0000 Subject: [PATCH 50/67] Improve a bit virtuoso detection (#2547) - Optimize the `url` regexp - simplify the `Server` one --- src/apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index 242335ccc..774ffb6ee 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10521,13 +10521,13 @@ 34 ], "headers": { - "Server": "Virtuoso\\/?(\\d{2}\\.\\d{2}\\.\\d{4})?\\;version:\\1" + "Server": "Virtuoso/?([0-9.]+)?\\;version:\\1" }, "meta": { "Copyright": "^Copyright © \\d{4} OpenLink Software", "Keywords": "^OpenLink Virtuoso Sparql" }, - "url": ".*/sparql\\.*", + "url": "/sparql", "website": "https://virtuoso.openlinksw.com/" }, "Visual WebGUI": { From b8cfbf5bcdab27b9a4b0daf7dcfb72a30c02f523 Mon Sep 17 00:00:00 2001 From: kkadosh <32873649+kkadosh@users.noreply.github.com> Date: Sat, 24 Nov 2018 04:27:41 +0100 Subject: [PATCH 51/67] improve tray regex (#2548) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 774ffb6ee..f9c1df8d6 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10019,7 +10019,7 @@ 6 ], "icon": "tray.png", - "script": ".+tcdn\\.com\\.br", + "script": "tcdn\\.com\\.br", "website": "https://www.tray.com.br" }, "Tumblr": { From 0f4dcdb1a7a3b4eade65826efb7f34af31a802e5 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:27:53 +0000 Subject: [PATCH 52/67] Improve mediawiki detection (#2549) - Optimize the regex - Add a js detection - Use https for the website --- src/apps.json | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index f9c1df8d6..4394cdb77 100644 --- a/src/apps.json +++ b/src/apps.json @@ -6007,13 +6007,20 @@ "cats": [ 8 ], - "html": "(?:<a[^>]+>Powered by MediaWiki</a>|<[^>]+id=\"t-specialpages)", + "html": [ + "<body[^>]+class=\"mediawiki\"", + "<(?:a|img)[^>]+>Powered by MediaWiki</a>", + "<a[^>]+/Special:WhatLinksHere/" + ], "icon": "MediaWiki.png", "implies": "PHP", + "js": { + "mw.util.toggleToc": "" + }, "meta": { "generator": "^MediaWiki ?(.+)$\\;version:\\1" }, - "website": "http://www.mediawiki.org" + "website": "https://www.mediawiki.org" }, "Medium": { "cats": [ From 22bda9f65f876013bb6ed3e4168c35084b30641b Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:28:05 +0000 Subject: [PATCH 53/67] Optimize a bit oscommerce detection (#2550) - Split the regexp in 3 parts - Improve a regex, accordingly to the [source code](https://github.com/osCommerce/oscommerce/blob/1705380eadfd14572764ba7c783d75951ef9d299/osCommerce/OM/Core/Site/Shop/Languages/en_US.xml#L205) of oscommerce - Fix some mistakes --- src/apps.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 4394cdb77..e1a5244ec 100644 --- a/src/apps.json +++ b/src/apps.json @@ -12251,7 +12251,11 @@ "cookies": { "osCsid": "" }, - "html": "(?:<a[^>]*(?:\\?|&)osCsid|Powered by (?:<[^>]+>)?osCommerce</a>|<[^>]+class=\"[^>]*infoBoxHeading)", + "html": [ + "<br />Powered by <a href=\"https?://www\\.oscommerce\\.com", + "<(?:input|a)[^>]+name=\"osCsid\"", + "<(?:tr|td|table)class=\"[^\"]*infoBoxHeading" + ], "icon": "osCommerce.png", "implies": [ "PHP", From 88c77fed21483828da1d7e8d043052c901f64e70 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:28:22 +0000 Subject: [PATCH 54/67] Remove wikispaces (#2552) https://www.wikispaces.com is now dead </3 --- src/apps.json | 11 ----------- src/icons/Wikispaces.png | Bin 2412 -> 0 bytes 2 files changed, 11 deletions(-) delete mode 100644 src/icons/Wikispaces.png diff --git a/src/apps.json b/src/apps.json index e1a5244ec..a12208a68 100644 --- a/src/apps.json +++ b/src/apps.json @@ -10880,17 +10880,6 @@ "icon": "wikinggruppen.png", "website": "https://wikinggruppen.se/" }, - "Wikispaces": { - "cats": [ - 8 - ], - "html": [ - "<script[^>]*>[^<]*session_url:\\s*'https://session\\.wikispaces\\.com/", - "<\\w+[^>]*\\s+class=\"[^\"]*WikispacesContent\\s+WikispacesBs3[^\"]*\"" - ], - "icon": "Wikispaces.png", - "website": "http://www.wikispaces.com" - }, "WikkaWiki": { "cats": [ 8 diff --git a/src/icons/Wikispaces.png b/src/icons/Wikispaces.png deleted file mode 100644 index 91034ccf26d36da8d9c8941c19ee2b479b2aabc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2412 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 From cbe6c19be926b425392b4880792111c4221eee0e Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:28:38 +0000 Subject: [PATCH 55/67] Detect concrete5 via cookies (#2554) This can be checked on cartus.com --- src/apps.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps.json b/src/apps.json index a12208a68..65a19fc2e 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2002,6 +2002,9 @@ "js": { "CCM_IMAGE_PATH": "" }, + "cookies": { + "CONCRETE5": "" + }, "meta": { "generator": "^concrete5 - ([\\d.]+)$\\;version:\\1" }, From ca2f54f67f325917249519143963d3e64c468121 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:28:50 +0000 Subject: [PATCH 56/67] Improve a bit bugzilla's version detection (#2555) --- src/apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps.json b/src/apps.json index 65a19fc2e..2a1258b22 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1393,6 +1393,7 @@ "html": [ "href=\"enter_bug\\.cgi\">", "<main id=\"bugzilla-body\"", + "<a href=\"https?://www\\.bugzilla\\.org/docs/([0-9.]+)/[^>]+>Help<\\;version:\\1", "<span id=\"information\" class=\"header_addl_info\">version ([\\d.]+)<\\;version:\\1" ], "cookies": { From e0d20056393698bd8294d68bb50ae7621f2c164f Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:29:35 +0000 Subject: [PATCH 57/67] Replace the .* pattern with something else when possible (#2558) This should give some performance boost, along with a cleaner code. --- src/apps.json | 174 +++++++++++++++++++++++++------------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/apps.json b/src/apps.json index 2a1258b22..6242b3378 100644 --- a/src/apps.json +++ b/src/apps.json @@ -46,7 +46,7 @@ "icon": "A-Frame.svg", "implies": "three.js", "js": { - "AFRAME.version": "(.*)\\;version:\\1" + "AFRAME.version": "^(.+)$\\;version:\\1" }, "script": "/?([\\d.]+)?/aframe(?:\\.min)?\\.js\\;version:\\1", "website": "https://aframe.io" @@ -353,7 +353,7 @@ ], "icon": "Adyen.svg", "js": { - "adyen.encrypt.version": "(.*)\\;version:\\1" + "adyen.encrypt.version": "^(.+)$\\;version:\\1" }, "website": "https://www.adyen.com" }, @@ -480,7 +480,7 @@ "icon": "Algolia Realtime Search.svg", "js": { "AlgoliaSearch": "", - "algoliasearch.version": "(.*)\\;version:\\1" + "algoliasearch.version": "^(.+)$\\;version:\\1" }, "website": "http://www.algolia.com" }, @@ -679,7 +679,7 @@ ], "js": { "angular": "", - "angular.version.full": "(.*)\\;version:\\1" + "angular.version.full": "^(.+)$\\;version:\\1" }, "script": [ "angular[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", @@ -819,7 +819,7 @@ ], "excludes": "OpenCart", "headers": { - "Arastta": "(.*)\\;version:\\1", + "Arastta": "^(.+)$\\;version:\\1", "X-Arastta": "" }, "html": "Powered by <a [^>]*href=\"https?://(?:www\\.)?arastta\\.org[^>]+>Arastta", @@ -1055,7 +1055,7 @@ "implies": "Underscore.js", "js": { "Backbone": "", - "Backbone.VERSION": "(.*)\\;version:\\1" + "Backbone.VERSION": "^(.+)$\\;version:\\1" }, "script": "backbone.*\\.js", "website": "http://backbonejs.org" @@ -1291,8 +1291,8 @@ ], "icon": "Bootstrap.png", "js": { - "bootstrap.Alert.VERSION": "(.*)\\;version:\\1", - "jQuery.fn.tooltip.Constructor.VERSION": "(.*)\\;version:\\1" + "bootstrap.Alert.VERSION": "^(.+)$\\;version:\\1", + "jQuery.fn.tooltip.Constructor.VERSION": "^(.+)$\\;version:\\1" }, "script": [ "twitter\\.github\\.com/bootstrap", @@ -1333,7 +1333,7 @@ "icon": "Braintree.svg", "js": { "Braintree": "", - "Braintree.version": "(.*)\\;version:\\1" + "Braintree.version": "^(.+)$\\;version:\\1" }, "website": "https://www.braintreepayments.com" }, @@ -1477,7 +1477,7 @@ "icon": "CKEditor.png", "js": { "CKEDITOR": "", - "CKEDITOR.version": "(.*)\\;version:\\1", + "CKEDITOR.version": "^(.+)$\\;version:\\1", "CKEDITOR_BASEPATH": "" }, "website": "http://ckeditor.com" @@ -1621,7 +1621,7 @@ "implies": "Node.js", "js": { "catberry": "", - "catberry.version": "(.*)\\;version:\\1" + "catberry.version": "^(.+)$\\;version:\\1" }, "website": "http://catberry.org" }, @@ -1876,7 +1876,7 @@ 18 ], "cookies": { - "ci_csrf_token": "(.*)\\;version:\\1?2+:", + "ci_csrf_token": "^(.+)$\\;version:\\1?2+:", "ci_session": "", "exp_last_activity": "", "exp_tracker": "" @@ -1893,7 +1893,7 @@ "icon": "CodeMirror.png", "js": { "CodeMirror": "", - "CodeMirror.version": "(.*)\\;version:\\1" + "CodeMirror.version": "^(.+)$\\;version:\\1" }, "website": "http://codemirror.net" }, @@ -2261,7 +2261,7 @@ ], "icon": "D3.png", "js": { - "d3.version": "(.*)\\;version:\\1" + "d3.version": "^(.+)$\\;version:\\1" }, "script": "/d3(?:\\. v\\d+)?(?:\\.min)?\\.js", "website": "http://d3js.org" @@ -2303,7 +2303,7 @@ "implies": "Microsoft ASP.NET", "js": { "DotNetNuke": "", - "dnn.apiversion": "(.*)\\;version:\\1" + "dnn.apiversion": "^(.+)$\\;version:\\1" }, "meta": { "generator": "DotNetNuke" @@ -2488,7 +2488,7 @@ "implies": "PHP", "js": { "DISCUZCODE": "", - "discuzVersion": "(.*)\\;version:\\1", + "discuzVersion": "^(.+)$\\;version:\\1", "discuz_uid": "" }, "meta": { @@ -2564,7 +2564,7 @@ "icon": "Dojo.png", "js": { "dojo": "", - "dojo.version.major": "(.*)\\;version:\\1" + "dojo.version.major": "^(.+)$\\;version:\\1" }, "script": "([\\d.]+)/dojo/dojo(?:\\.xd)?\\.js\\;version:\\1", "website": "https://dojotoolkit.org" @@ -2905,7 +2905,7 @@ "implies": "Handlebars", "js": { "Ember": "", - "Ember.VERSION": "(.*)\\;version:\\1" + "Ember.VERSION": "^(.+)$\\;version:\\1" }, "website": "http://emberjs.com" }, @@ -2984,7 +2984,7 @@ "icon": "Exhibit.png", "js": { "Exhibit": "", - "Exhibit.version": "(.*)\\;version:\\1" + "Exhibit.version": "^(.+)$\\;version:\\1" }, "script": "exhibit.*\\.js", "website": "http://simile-widgets.org/exhibit/" @@ -3021,8 +3021,8 @@ "icon": "ExtJS.png", "js": { "Ext": "", - "Ext.version": "(.*)\\;version:\\1", - "Ext.versions.extjs.version": "(.*)\\;version:\\1" + "Ext.version": "^(.+)$\\;version:\\1", + "Ext.versions.extjs.version": "^(.+)$\\;version:\\1" }, "script": "ext-base\\.js", "website": "https://www.sencha.com" @@ -3084,7 +3084,7 @@ "icon": "FancyBox.png", "implies": "jQuery", "js": { - "$.fancybox.version": "(.*)\\;version:\\1" + "$.fancybox.version": "^(.+)$\\;version:\\1" }, "script": "jquery\\.fancybox(?:\\.pack|\\.min)?\\.js(?:\\?v=([\\d.]+))?$\\;version:\\1", "website": "http://fancyapps.com/fancybox" @@ -3150,7 +3150,7 @@ "js": { "Fingerprint": "(\\d)?$\\;version:\\1", "Fingerprint2": "", - "Fingerprint2.VERSION": "(.*)\\;version:\\1" + "Fingerprint2.VERSION": "^(.+)$\\;version:\\1" }, "script": "fingerprint(\\d)?(?:\\.min)?\\.js\\;version:\\1", "website": "https://valve.github.io/fingerprintjs2/" @@ -4088,9 +4088,9 @@ ], "icon": "Hammer.js.png", "js": { - "Ha.VERSION": "(.*)\\;version:\\1", + "Ha.VERSION": "^(.+)$\\;version:\\1", "Hammer": "", - "Hammer.VERSION": "(.*)\\;version:\\1" + "Hammer.VERSION": "^(.+)$\\;version:\\1" }, "script": "hammer(?:\\.min)?\\.js", "website": "https://hammerjs.github.io" @@ -4103,7 +4103,7 @@ "icon": "Handlebars.png", "js": { "Handlebars": "", - "Handlebars.VERSION": "(.*)\\;version:\\1" + "Handlebars.VERSION": "^(.+)$\\;version:\\1" }, "script": "handlebars(?:\\.runtime)?(?:-v([\\d.]+?))?(?:\\.min)?\\.js\\;version:\\1", "website": "http://handlebarsjs.com" @@ -4191,7 +4191,7 @@ "icon": "Highcharts.png", "js": { "Highcharts": "", - "Highcharts.version": "(.*)\\;version:\\1" + "Highcharts.version": "^(.+)$\\;version:\\1" }, "script": "highcharts.*\\.js", "website": "https://www.highcharts.com" @@ -4457,7 +4457,7 @@ "icon": "Immutable.js.png", "js": { "Immutable": "", - "Immutable.version": "(.*)\\;version:\\1" + "Immutable.version": "^(.+)$\\;version:\\1" }, "script": "^immutable\\.(?:min\\.)?js$", "website": "https://facebook.github.io/immutable-js/" @@ -4560,7 +4560,7 @@ "icon": "InfernoJS.png", "js": { "Inferno": "", - "Inferno.version": "(.*)\\;version:\\1" + "Inferno.version": "^(.+)$\\;version:\\1" }, "website": "https://infernojs.org" }, @@ -4797,7 +4797,7 @@ "icon": "JavaScript Infovis Toolkit.png", "js": { "$jit": "", - "$jit.version": "(.*)\\;version:\\1" + "$jit.version": "^(.+)$\\;version:\\1" }, "script": "jit(?:-yc)?\\.js", "website": "https://philogb.github.io/jit/" @@ -5039,7 +5039,7 @@ "implies": "jQuery", "js": { "kendo": "", - "kendo.version": "(.*)\\;version:\\1" + "kendo.version": "^(.+)$\\;version:\\1" }, "website": "https://www.telerik.com/kendo-ui" }, @@ -5088,7 +5088,7 @@ "icon": "KineticJS.png", "js": { "Kinetic": "", - "Kinetic.version": "(.*)\\;version:\\1" + "Kinetic.version": "^(.+)$\\;version:\\1" }, "script": "kinetic(?:-v?([\\d.]+))?(?:\\.min)?\\.js\\;version:\\1", "website": "https://github.com/ericdrowell/KineticJS/" @@ -5111,7 +5111,7 @@ ], "icon": "Knockout.js.png", "js": { - "ko.version": "(.*)\\;version:\\1" + "ko.version": "^(.+)$\\;version:\\1" }, "website": "http://knockoutjs.com" }, @@ -5253,7 +5253,7 @@ 1 ], "headers": { - "X-KoobooCMS-Version": "(.*)\\;version:\\1" + "X-KoobooCMS-Version": "^(.+)$\\;version:\\1" }, "icon": "Kooboo CMS.png", "implies": "Microsoft ASP.NET", @@ -5337,7 +5337,7 @@ "js": { "L.DistanceGrid": "", "L.PosAnimation": "", - "L.version": "(.*)\\;version:\\1\\;confidence:0" + "L.version": "^(.+)$\\;version:\\1\\;confidence:0" }, "script": "leaflet.*\\.js", "website": "http://leafletjs.com" @@ -5551,7 +5551,7 @@ "icon": "Livefyre.png", "js": { "FyreLoader": "", - "L.version": "(.*)\\;confidence:0\\;version:\\1", + "L.version": "^(.+)$\\;confidence:0\\;version:\\1", "LF.CommentCount": "", "fyre": "" }, @@ -5591,7 +5591,7 @@ "excludes": "Underscore.js", "icon": "Lo-dash.png", "js": { - "_.VERSION": "(.*)\\;confidence:0\\;version:\\1", + "_.VERSION": "^(.+)$\\;confidence:0\\;version:\\1", "_.differenceBy": "" }, "script": "lodash.*\\.js", @@ -5838,7 +5838,7 @@ ], "js": { "Marionette": "", - "Marionette.VERSION": "(.*)\\;version:\\1" + "Marionette.VERSION": "^(.+)$\\;version:\\1" }, "script": "backbone\\.marionette.*\\.js", "website": "https://marionettejs.com" @@ -5894,7 +5894,7 @@ "icon": "MathJax.png", "js": { "MathJax": "", - "MathJax.version": "(.*)\\;version:\\1" + "MathJax.version": "^(.+)$\\;version:\\1" }, "script": "([\\d.]+)?/mathjax\\.js\\;version:\\1", "website": "https://www.mathjax.org" @@ -5993,7 +5993,7 @@ "icon": "MediaElement.js.png", "js": { "mejs": "", - "mejs.version": "(.*)\\;version:\\1" + "mejs.version": "^(.+)$\\;version:\\1" }, "website": "http://www.mediaelementjs.com" }, @@ -6170,7 +6170,7 @@ 1 ], "headers": { - "MicrosoftSharePointTeamServices": "(.*)\\;version:\\1", + "MicrosoftSharePointTeamServices": "^(.+)$\\;version:\\1", "SPRequestGuid": "", "SharePointHealthScore": "", "X-SharePointHealthScore": "" @@ -6307,7 +6307,7 @@ "icon": "MochiKit.png", "js": { "MochiKit": "", - "MochiKit.MochiKit.VERSION": "(.*)\\;version:\\1" + "MochiKit.MochiKit.VERSION": "^(.+)$\\;version:\\1" }, "script": "MochiKit(?:\\.min)?\\.js", "website": "https://mochi.github.io/mochikit/" @@ -6327,7 +6327,7 @@ ], "icon": "Modernizr.svg", "js": { - "Modernizr._version": "(.*)\\;version:\\1" + "Modernizr._version": "^(.+)$\\;version:\\1" }, "script": [ "([\\d.]+)?/modernizr(?:.([\\d.]+))?.*\\.js\\;version:\\1?\\1:\\2" @@ -6407,7 +6407,7 @@ "icon": "Moment.js.svg", "js": { "moment": "", - "moment.version": "(.*)\\;version:\\1" + "moment.version": "^(.+)$\\;version:\\1" }, "script": "moment(?:\\.min)?\\.js", "website": "https://momentjs.com" @@ -6487,7 +6487,7 @@ "icon": "MooTools.png", "js": { "MooTools": "", - "MooTools.version": "(.*)\\;version:\\1" + "MooTools.version": "^(.+)$\\;version:\\1" }, "script": "mootools.*\\.js", "website": "https://mootools.net" @@ -6586,7 +6586,7 @@ ], "icon": "Mustache.png", "js": { - "Mustache.version": "(.*)\\;version:\\1" + "Mustache.version": "^(.+)$\\;version:\\1" }, "script": "mustache(?:\\.min)?\\.js", "website": "https://mustache.github.io" @@ -6650,7 +6650,7 @@ "implies": "D3", "js": { "nv.addGraph": "", - "nv.version": "(.*)\\;confidence:0\\;version:\\1" + "nv.version": "^(.+)$\\;confidence:0\\;version:\\1" }, "script": "nv\\.d3(?:\\.min)?\\.js", "website": "http://nvd3.org" @@ -6750,7 +6750,7 @@ "implies": "PHP", "js": { "Nette": "", - "Nette.version": "(.*)\\;version:\\1" + "Nette.version": "^(.+)$\\;version:\\1" }, "website": "https://nette.org" }, @@ -7108,7 +7108,7 @@ ], "icon": "OpenUI5.png", "js": { - "sap.ui.version": "(.*)\\;version:\\1" + "sap.ui.version": "^(.+)$\\;version:\\1" }, "script": "sap-ui-core\\.js", "website": "http://openui5.org/" @@ -7131,12 +7131,12 @@ 18 ], "headers": { - "X-Powered-By": "Ophal(?: (.*))? \\(ophal\\.org\\)\\;version:\\1" + "X-Powered-By": "Ophal(?: (.+))? \\(ophal\\.org\\)\\;version:\\1" }, "icon": "Ophal.png", "implies": "Lua", "meta": { - "generator": "Ophal(?: (.*))? \\(ophal\\.org\\)\\;version:\\1" + "generator": "Ophal(?: (.+))? \\(ophal\\.org\\)\\;version:\\1" }, "script": "ophal\\.js", "website": "http://ophal.org" @@ -7178,7 +7178,7 @@ 6 ], "headers": { - "OracleCommerceCloud-Version": "(.*)\\;version:\\1" + "OracleCommerceCloud-Version": "^(.+)$\\;version:\\1" }, "html": "<[^>]+id=\"oracle-cc\"", "icon": "Oracle.png", @@ -7239,7 +7239,7 @@ ], "icon": "Outbrain.png", "js": { - "OB_releaseVer": "(.*)\\;version:\\1", + "OB_releaseVer": "^(.+)$\\;version:\\1", "OutbrainPermaLink": "" }, "script": "widgets\\.outbrain\\.com/outbrain\\.js", @@ -7276,7 +7276,7 @@ "icon": "PDF.js.svg", "js": { "PDFJS": "", - "PDFJS.version": "(.*)\\;version:\\1" + "PDFJS.version": "^(.+)$\\;version:\\1" }, "url": "/web/viewer\\.html?file=[^&]\\.pdf", "website": "https://mozilla.github.io/pdf.js/" @@ -7370,7 +7370,7 @@ ], "icon": "paperjs.png", "js": { - "paper.version": "(.*)\\;version:\\1" + "paper.version": "^(.+)$\\;version:\\1" }, "website": "http://paperjs.org/" }, @@ -7516,7 +7516,7 @@ "icon": "Phaser.png", "js": { "Phaser": "", - "Phaser.VERSION": "(.*)\\;version:\\1" + "Phaser.VERSION": "^(.+)$\\;version:\\1" }, "website": "https://phaser.io" }, @@ -7684,7 +7684,7 @@ "html": "(?:<polymer-[^>]+|<link[^>]+rel=\"import\"[^>]+/polymer\\.html\")", "icon": "Polymer.png", "js": { - "Polymer.version": "(.*)\\;version:\\1" + "Polymer.version": "^(.+)$\\;version:\\1" }, "script": "polymer\\.js", "website": "http://polymer-project.org" @@ -7825,7 +7825,7 @@ ], "icon": "Prototype.png", "js": { - "Prototype.Version": "(.*)\\;version:\\1" + "Prototype.Version": "^(.+)$\\;version:\\1" }, "script": "(?:prototype|protoaculous)(?:-([\\d.]*[\\d]))?.*\\.js\\;version:\\1", "website": "http://www.prototypejs.org" @@ -7884,7 +7884,7 @@ "PUBLICCMS_USER": "" }, "headers": { - "X-Powered-PublicCMS": "(.*)\\;version:\\1" + "X-Powered-PublicCMS": "^(.+)$\\;version:\\1" }, "icon": "Public CMS.png", "implies": "Java", @@ -8100,7 +8100,7 @@ ], "icon": "Raphael.png", "js": { - "Raphael.version": "(.*)\\;version:\\1" + "Raphael.version": "^(.+)$\\;version:\\1" }, "script": "raphael(?:-([\\d.]+))?(?:\\.min)?\\.js\\;version:\\1", "website": "https://dmitrybaranovskiy.github.io/raphael/" @@ -8158,7 +8158,7 @@ "icon": "redoc.png", "implies": "React", "js": { - "Redoc.version": "(.*)\\;version:\\1" + "Redoc.version": "^(.+)$\\;version:\\1" }, "script": "/redoc\\.(?:min\\.)?js", "website": "https://github.com/Rebilly/ReDoc" @@ -8170,8 +8170,8 @@ "html": "<[^>]+data-react", "icon": "React.png", "js": { - "React.version": "(.*)\\;version:\\1", - "react.version": "(.*)\\;version:\\1" + "React.version": "^(.+)$\\;version:\\1", + "react.version": "^(.+)$\\;version:\\1" }, "script": [ "react(?:-with-addons)?[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", @@ -8235,7 +8235,7 @@ ], "icon": "RequireJS.png", "js": { - "requirejs.version": "(.*)\\;version:\\1" + "requirejs.version": "^(.+)$\\;version:\\1" }, "script": "require.*\\.js", "website": "http://requirejs.org" @@ -8258,7 +8258,7 @@ "icon": "Reveal.js.png", "implies": "Highlight.js", "js": { - "Reveal.VERSION": "(.*)\\;version:\\1" + "Reveal.VERSION": "^(.+)$\\;version:\\1" }, "script": "(?:^|/)reveal(?:\\.min)?\\.js", "website": "http://lab.hakim.se/reveal-js" @@ -8377,7 +8377,7 @@ "Microsoft ASP.NET" ], "meta": { - "generator": "^Rock v.*" + "generator": "^Rock v([0-9.]+)\\;version:\\1" }, "website": "http://www.rockrms.com" }, @@ -9156,7 +9156,7 @@ ], "icon": "Snap.svg.png", "js": { - "Snap.version": "(.*)\\;version:\\1" + "Snap.version": "^(.+)$\\;version:\\1" }, "script": "snap\\.svg(?:-min)?\\.js", "website": "http://snapsvg.io" @@ -9191,7 +9191,7 @@ "implies": "Node.js", "js": { "io.Socket": "", - "io.version": "(.*)\\;version:\\1" + "io.version": "^(.+)$\\;version:\\1" }, "script": "socket\\.io.*\\.js", "website": "https://socket.io" @@ -9491,7 +9491,7 @@ "html": "<input[^>]+data-stripe", "icon": "Stripe.png", "js": { - "Stripe.version": "(.*)\\;version:\\1" + "Stripe.version": "^(.+)$\\;version:\\1" }, "script": "js\\.stripe\\.com", "website": "http://stripe.com" @@ -9885,7 +9885,7 @@ "application-name": "^TiddlyWiki$", "copyright": "^TiddlyWiki created by Jeremy Ruston", "generator": "^TiddlyWiki$", - "tiddlywiki-version": "(.*)\\;version:\\1" + "tiddlywiki-version": "^(.+)$\\;version:\\1" }, "website": "http://tiddlywiki.com" }, @@ -10051,7 +10051,7 @@ ], "icon": "TweenMax.png", "js": { - "TweenMax.version": "(.*)\\;version:\\1" + "TweenMax.version": "^(.+)$\\;version:\\1" }, "script": "TweenMax(?:\\.min)?\\.js", "website": "http://greensock.com/tweenmax" @@ -10160,7 +10160,7 @@ ], "icon": "Typekit.png", "js": { - "Typekit.config.js": "(.*)\\;version:\\1" + "Typekit.config.js": "^(.+)$\\;version:\\1" }, "script": "use\\.typekit\\.com", "website": "http://typekit.com" @@ -10224,8 +10224,8 @@ "js": { "ucCatalog": "" }, - "script": "cgi-bin\\/UCJavaScript\\?(?:[^\"]*&)?merchantid=", - "url": "/cgi-bin/UCEditor\\?(?:.*&)?merchantid=", + "script": "cgi-bin\\/UCJavaScript\\?", + "url": "/cgi-bin/UCEditor\\?", "website": "http://ultracart.com" }, "Umbraco": { @@ -10233,7 +10233,7 @@ 1 ], "headers": { - "X-Umbraco-Version": "(.*)\\;version:\\1" + "X-Umbraco-Version": "^(.+)$\\;version:\\1" }, "html": "powered by <a href=[^>]+umbraco", "icon": "Umbraco.png", @@ -10269,7 +10269,7 @@ "excludes": "Lodash", "icon": "Underscore.js.png", "js": { - "_.VERSION": "(.*)\\;confidence:0\\;version:\\1", + "_.VERSION": "^(.+)$\\;confidence:0\\;version:\\1", "_.restArguments": "" }, "script": "underscore.*\\.js(?:\\?ver=([\\d.]+))?\\;version:\\1", @@ -10611,7 +10611,7 @@ "html": "<[^>]+data-v(?:ue)-", "icon": "Vue.js.png", "js": { - "Vue.version": "(.*)\\;version:\\1" + "Vue.version": "^(.+)$\\;version:\\1" }, "script": [ "vue[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", @@ -10922,7 +10922,7 @@ ], "icon": "Wink.png", "js": { - "wink.version": "(.*)\\;version:\\1" + "wink.version": "^(.+)$\\;version:\\1" }, "script": "(?:_base/js/base|wink).*\\.js", "website": "http://winktoolkit.org" @@ -11134,7 +11134,7 @@ ], "icon": "XRegExp.png", "js": { - "XRegExp.version": "(.*)\\;version:\\1" + "XRegExp.version": "^(.+)$\\;version:\\1" }, "script": [ "xregexp[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", @@ -11253,8 +11253,8 @@ ], "icon": "YUI.png", "js": { - "YAHOO.VERSION": "(.*)\\;version:\\1", - "YUI.version": "(.*)\\;version:\\1" + "YAHOO.VERSION": "^(.+)$\\;version:\\1", + "YUI.version": "^(.+)$\\;version:\\1" }, "script": "(?:/yui/|yui\\.yahooapis\\.com)", "website": "http://yuilibrary.com" @@ -11756,7 +11756,7 @@ ], "icon": "ef.js.svg", "js": { - "ef.version": "(.*)\\;version:\\1", + "ef.version": "^(.+)$\\;version:\\1", "efCore": "" }, "script": "/ef(?:-core)?(?:\\.min|\\.dev)?\\.js", @@ -11976,7 +11976,7 @@ "icon": "jQuery Mobile.svg", "implies": "jQuery", "js": { - "jQuery.mobile.version": "(.*)\\;version:\\1" + "jQuery.mobile.version": "^(.+)$\\;version:\\1" }, "script": "jquery[.-]mobile(?:-([\\d.]))?(?:\\.min)?\\.js(?:\\?ver=([\\d.]+))?\\;version:\\1?\\1:\\2", "website": "https://jquerymobile.com" @@ -12013,7 +12013,7 @@ "icon": "jQuery UI.svg", "implies": "jQuery", "js": { - "jQuery.ui.version": "(.*)\\;version:\\1" + "jQuery.ui.version": "^(.+)$\\;version:\\1" }, "script": [ "jquery-ui[.-]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", @@ -12512,7 +12512,7 @@ ], "icon": "script.aculo.us.png", "js": { - "Scriptaculous.Version": "(.*)\\;version:\\1" + "Scriptaculous.Version": "^(.+)$\\;version:\\1" }, "script": "/(?:scriptaculous|protoaculous)(?:\\.js|/)", "website": "https://script.aculo.us" @@ -12524,7 +12524,7 @@ "icon": "scrollreveal.svg", "html": "<[^>]+data-sr(?:-id)", "js": { - "ScrollReveal().version": "(.*)\\;version:\\1" + "ScrollReveal().version": "^(.+)$\\;version:\\1" }, "script": "scrollreveal(?:\\.min)(?:\\.js)", "website": "https://scrollrevealjs.org" @@ -12570,7 +12570,7 @@ ], "icon": "three.js.png", "js": { - "THREE.REVISION": "(.*)\\;version:\\1" + "THREE.REVISION": "^(.+)$\\;version:\\1" }, "script": "three(?:\\.min)?\\.js", "website": "https://threejs.org" From 34e488b44344ead8c78cc3ba728c43605cda1b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D9=81=D8=B1=D9=88=D8=B4=DA=AF=D8=A7=D9=87=20=D8=B3=D8=A7?= =?UTF-8?q?=D8=B2=20=D8=B1=D8=A7=DB=8C=DA=AF=D8=A7=D9=86=20=D8=B4=D8=A7?= =?UTF-8?q?=D9=BE=D8=B1=D9=81=D8=A7?= <45184786+shoperfa@users.noreply.github.com> Date: Sat, 24 Nov 2018 07:00:07 +0330 Subject: [PATCH 58/67] added Shoperfa to apps.json (#2561) * add shoperfa e-commerce icon add shoperfa e-commerce icon to icon package * add shoperfa website add shoperfa website to Ecommerce Technologies --- src/apps.json | 11 +++++++++++ src/icons/Shoperfa.png | Bin 0 -> 2046 bytes 2 files changed, 11 insertions(+) create mode 100644 src/icons/Shoperfa.png diff --git a/src/apps.json b/src/apps.json index 6242b3378..e0dd3b66d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -12684,6 +12684,17 @@ "url": "^https?://(?:www\\.)?virgool\\.io", "website": "https://virgool.io" }, + "shoperfa": { + "cats": [ + 6 + ], + "headers": { + "X-Powered-By": "^Shoperfa$" + }, + "icon": "Shoperfa.png", + "url": "^https?://(?:www\\.)?shoperfa\\.com", + "website": "https://shoperfa.com" + }, "webEdition": { "cats": [ 1 diff --git a/src/icons/Shoperfa.png b/src/icons/Shoperfa.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bc62af867d75ff890432b0ae6c4ad45d8974de GIT binary patch literal 2046 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 P_eT!!4Q4da;<En>!{kk$ literal 0 HcmV?d00001 From 1b47bf311ff83b0896aa6acdddc973d4f8e380fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zsombor=20Par=C3=B3czi?= <zsombor.paroczi@gmail.com> Date: Sat, 24 Nov 2018 04:30:54 +0100 Subject: [PATCH 59/67] Less meta regex (#2565) --- src/wappalyzer.js | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/wappalyzer.js b/src/wappalyzer.js index c8300c916..05e9121ba 100644 --- a/src/wappalyzer.js +++ b/src/wappalyzer.js @@ -160,6 +160,8 @@ class Wappalyzer { this.detected[url.canonical] = {}; } + const metas = []; + // Additional information let language = null; @@ -171,6 +173,20 @@ class Wappalyzer { const matches = data.html.match(/<html[^>]*[: ]lang="([a-z]{2}((-|_)[A-Z]{2})?)"/i); language = matches && matches.length ? matches[1] : null; + + // grab metas + const regex = /<meta[^>]+>/ig; + let metaMatches; + do { + metaMatches = regex.exec(html); + + if (!metaMatches) { + break; + } + + const [match] = metaMatches; + metas.push(match); + } while (metaMatches); } Object.keys(this.apps).forEach((appName) => { @@ -184,7 +200,7 @@ class Wappalyzer { if (html) { promises.push(this.analyzeHtml(app, html)); - promises.push(this.analyzeMeta(app, html)); + promises.push(this.analyzeMeta(app, metas)); } if (scripts) { @@ -556,8 +572,7 @@ class Wappalyzer { /** * Analyze meta tag */ - analyzeMeta(app, html) { - const regex = /<meta[^>]+>/ig; + analyzeMeta(app, metas) { const patterns = this.parsePatterns(app.props.meta); const promises = []; @@ -565,17 +580,7 @@ class Wappalyzer { return Promise.resolve(); } - let matches; - - do { - matches = regex.exec(html); - - if (!matches) { - break; - } - - const [match] = matches; - + metas.forEach((match) => { Object.keys(patterns).forEach((meta) => { const r = new RegExp(`(?:name|property)=["']${meta}["']`, 'i'); @@ -589,7 +594,7 @@ class Wappalyzer { })); } }); - } while (matches); + }); return Promise.all(promises); } From aca25bfb071e2303cc1d73ac2d882780094c2fd7 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:31:05 +0000 Subject: [PATCH 60/67] Improve a bit typo3 detection (#2533) This can be checked [here](http://www.gertrudhof.ch/index.php?id=1) --- src/apps.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index e0dd3b66d..5e65b7615 100644 --- a/src/apps.json +++ b/src/apps.json @@ -9704,14 +9704,18 @@ "cats": [ 1 ], - "html": "<(?:script[^>]+ src|link[^>]+ href)=[^>]+typo3temp/", + "html": [ + "<link[^>]+ href=\"typo3(?:conf|temp)/", + "<img[^>]+ src=\"typo3(?:conf|temp)/" + ], "icon": "TYPO3.svg", "implies": "PHP", + "script": "^typo3(?:conf|temp)/", "meta": { "generator": "TYPO3\\s+(?:CMS\\s+)?([\\d.]+)?(?:\\s+CMS)?\\;version:\\1" }, "url": "/typo3/", - "website": "http://www.typo3.org" + "website": "https://typo3.org/" }, "Taiga": { "cats": [ From ba6487640d12a659888d8b857523fc798ee9bc9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zsombor=20Par=C3=B3czi?= <zsombor.paroczi@gmail.com> Date: Sat, 24 Nov 2018 04:32:33 +0100 Subject: [PATCH 61/67] Remove split / concat when htmlMaxRows and htmlMaxCols is 0 (#2539) --- src/drivers/npm/driver.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js index aa9e6a78b..8d099add3 100644 --- a/src/drivers/npm/driver.js +++ b/src/drivers/npm/driver.js @@ -282,13 +282,17 @@ class Driver { let html = ''; try { - html = browser.html() - .replace(new RegExp(`(.{${this.options.htmlMaxCols},}[^>]*>)<`, 'g'), (match, p1) => `${p1}\n<`) - .split('\n') - .slice(0, this.options.htmlMaxRows / 2) - .concat(html.slice(html.length - this.options.htmlMaxRows / 2)) - .map(line => line.substring(0, this.options.htmlMaxCols)) - .join('\n'); + if ((this.options.htmlMaxCols === 0) && (this.options.htmlMaxRows === 0)) { + html = browser.html().replace(new RegExp('<', 'g'), '\n<'); + } else { + html = browser.html() + .replace(new RegExp(`(.{${this.options.htmlMaxCols},}[^>]*>)<`, 'g'), (match, p1) => `${p1}\n<`) + .split('\n') + .slice(0, this.options.htmlMaxRows / 2) + .concat(html.slice(html.length - this.options.htmlMaxRows / 2)) + .map(line => line.substring(0, this.options.htmlMaxCols)) + .join('\n'); + } } catch (error) { this.wappalyzer.log(error.message, 'browser', 'error'); } From cb71babf0dc4944237811965dd392c699776a1ff Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:32:48 +0000 Subject: [PATCH 62/67] Improve a bit the regexp for phpbb (#2551) - Split the regexp - Simplify some parts --- src/apps.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 5e65b7615..911d57dd9 100644 --- a/src/apps.json +++ b/src/apps.json @@ -12332,7 +12332,13 @@ "cookies": { "phpbb": "" }, - "html": "(?:Powered by <a[^>]+phpbb|<a[^>]+phpbb[^>]+class=\\.copyright|\\tphpBB style name|<[^>]+styles/(?:sub|pro)silver/theme|<img[^>]+i_icon_mini|<table class=\"forumline)", + "html": [ + "Powered by <a[^>]+phpBB", + "<div class=phpbb_copyright>", + "<[^>]+styles/(?:sub|pro)silver/theme", + "<img[^>]+i_icon_mini", + "<table class=\"[^\"]*forumline" + ], "icon": "phpBB.png", "implies": "PHP", "js": { From 655261781fe90fad80fe7177eec1a3e00847746c Mon Sep 17 00:00:00 2001 From: Antoni Kepinski <keppi@o2.pl> Date: Sat, 24 Nov 2018 04:33:02 +0100 Subject: [PATCH 63/67] Update styled-components detection (#2556) * Update styled-components detection * Add version detection & support older style tag * Fix typo --- src/apps.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 911d57dd9..a91091a05 100644 --- a/src/apps.json +++ b/src/apps.json @@ -12554,7 +12554,10 @@ 12, 47 ], - "html": "<style[^>]*data-styled-components", + "html": [ + "<style[^>]*data-styled(?:-components)?[\\s\"]", + "<style[^>]+data-styled-version=\"([0-9]+)\"\\;version:\\1" + ], "icon": "styled-components.png", "implies": [ "React" From 243c33cd1781563f051483a7c4e47d207714f45a Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:40:52 +0000 Subject: [PATCH 64/67] Move <script regex to the "script" section (#2553) --- src/apps.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/apps.json b/src/apps.json index a91091a05..e0040da64 100644 --- a/src/apps.json +++ b/src/apps.json @@ -1318,7 +1318,7 @@ "cats": [ 32 ], - "html": "<script[^>]*>[^>]+\\.src\\s*=\\s*['\"](?:https?:)?//tag\\.bounceexchange\\.com/", + "script": "//tag\\.bounceexchange\\.com/", "icon": "Bounce Exchange.svg", "js": { "bouncex": "" @@ -1442,7 +1442,7 @@ "cats": [ 36 ], - "html": "<script[^>]*>[^<]+?bsa\\.src\\s*=\\s*['\"](?:https?:)?\\/{2}\\w\\d\\.buysellads\\.com\\/[\\w\\d\\/]+?bsa\\.js['\"]", + "script": "\\.buysellads\\.com/", "icon": "BuySellAds.png", "js": { "_bsa": "", @@ -9943,7 +9943,6 @@ "cats": [ 36 ], - "html": "<script[^>]+>var titan", "icon": "Titan.png", "js": { "titan": "", From ed12267808104dc799a0a7d63a8f04fbb2f263e3 Mon Sep 17 00:00:00 2001 From: jvoisin <jvoisin@users.noreply.github.com> Date: Sat, 24 Nov 2018 03:42:56 +0000 Subject: [PATCH 65/67] Improve a bit wordpress detection (#2534) --- src/apps.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/apps.json b/src/apps.json index e0040da64..0759ee03a 100644 --- a/src/apps.json +++ b/src/apps.json @@ -11028,7 +11028,7 @@ 11 ], "html": [ - "<link rel=[\"']stylesheet[\"'] [^>]+wp-(?:content|includes)", + "<link rel=[\"']stylesheet[\"'] [^>]+/wp-(?:content|includes)/", "<div[^>]*class=[\"']amp-wp-", "<link[^>]+s\\d+\\.wp\\.com" ], @@ -11044,10 +11044,10 @@ "wp_username": "" }, "meta": { - "generator": "WordPress( [\\d.]+)?\\;version:\\1" + "generator": "^WordPress ?([\\d.]+)?\\;version:\\1" }, - "script": "/wp-includes/", - "website": "http://wordpress.org" + "script": "/wp-(?:content|includes)/", + "website": "https://wordpress.org" }, "WordPress Super Cache": { "cats": [ From 519f190b780d48bf4fec71a9926cb47f16fafd30 Mon Sep 17 00:00:00 2001 From: Kirtan Gajjar <kirtangajjar95@gmail.com> Date: Fri, 30 Nov 2018 03:03:06 +0530 Subject: [PATCH 66/67] Add EasyEngine app (#2566) --- src/apps.json | 14 ++++++++++++++ src/icons/EasyEngine.png | Bin 0 -> 4635 bytes 2 files changed, 14 insertions(+) create mode 100644 src/icons/EasyEngine.png diff --git a/src/apps.json b/src/apps.json index 0759ee03a..8a796fa0d 100644 --- a/src/apps.json +++ b/src/apps.json @@ -2745,6 +2745,20 @@ "script": "dtagent.*\\.js", "website": "http://dynatrace.com" }, + "EasyEngine": { + "cats": [ + 47, + 9 + ], + "icon": "EasyEngine.png", + "implies": [ + "Docker" + ], + "headers": { + "x-powered-by": "^EasyEngine (.*)$\\;version:\\1" + }, + "website": "https://easyengine.io" + }, "EC-CUBE": { "cats": [ 6 diff --git a/src/icons/EasyEngine.png b/src/icons/EasyEngine.png new file mode 100644 index 0000000000000000000000000000000000000000..737ecd1b7931f593a6d3e1f310cba060595d77e0 GIT binary patch literal 4635 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 KV~a5M;r{`vyfN$m literal 0 HcmV?d00001 From 1c43b42e54525cbc699ca504ec912200fecc5176 Mon Sep 17 00:00:00 2001 From: Arnaud Ligny <arnaud@ligny.org> Date: Thu, 29 Nov 2018 22:33:56 +0100 Subject: [PATCH 67/67] PHPoole is now Cecil! \o/ (#2568) * PHPoole is now Cecil! \o/ * PHPoole -> Cecil --- src/apps.json | 8 ++++---- src/icons/{PHPoole.png => Cecil.png} | Bin 2 files changed, 4 insertions(+), 4 deletions(-) rename src/icons/{PHPoole.png => Cecil.png} (100%) diff --git a/src/apps.json b/src/apps.json index 8a796fa0d..080229888 100644 --- a/src/apps.json +++ b/src/apps.json @@ -7345,15 +7345,15 @@ ], "website": "http://phpdebugbar.com/" }, - "PHPoole": { + "Cecil": { "cats": [ 57 ], - "icon": "PHPoole.png", + "icon": "Cecil.png", "meta": { - "generator": "^PHPoole$" + "generator": "^Cecil|PHPoole$" }, - "website": "https://phpoole.org" + "website": "https://cecil.app" }, "Pagekit": { "cats": [ diff --git a/src/icons/PHPoole.png b/src/icons/Cecil.png similarity index 100% rename from src/icons/PHPoole.png rename to src/icons/Cecil.png