CookieViz en Mac OS X en más de 128 palabras

CookieViz es una herramienta de visualización que mide el impacto de las cookies en su propia navegación.

https://linc.cnil.fr/fr/cookieviz-une-dataviz-en-temps-reel-du-tracking-de-votre-navigation

La página es git es https://github.com/LINCnil/CookieViz

Instalo MAMP: https://www.mamp.info/en/downloads/

MAMP es una compilación de software gratuito de código abierto para administrar sitios web dinámicos en equipos que ejecutan macOS o Windows: Apache, el servidor web; MySQL, el sistema de gestión de bases de datos; phP, Perl o Python, lenguajes de programación utilizados para el desarrollo web.

Instalar Homebrew: Homebrew es un sistema gratuito de gestión de software de código abierto que simplifica la instalación de software en el sistema operativo macOS y Linux de Apple.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

El script pide cambiar al modo de superusuario a través del comando sudo y pide que escriba la contraseña varias veces.

Al final de la instalación se obtiene una instalación exitosa!

Instalo mitmdump que está en el paquete mitmproxy

brew instalar mitmproxy

Validar la instalación tocando mitmdump –version

mitmdump --version
 Mitmproxy: 4.0.4
 Python: 3.7.5
 OpenSSL: OpenSSL 1.1.1d 10 Sep 2019
 Plataforma: Darwin-17.7.0-x86_64-i386-64bit

Empiezo MAMP y no MAMP PRO que se paga

Obtengo la página de inicio de mi servidor web Apache que se inicia en el puerto 8888 por defecto puedo llegar escribiendo localhost:8888 como url en mi navegador.

Si envoy en el menú MAMP -Preferencias puedo cambiar los puertos utilizados.

He descargado de la fuente github de cookieViz https://github.com/LINCnil/CookieViz a través del enlace Clonar y descargar. También es posible iniciar un terminal y colocarse en la raíz del servidor WEB Apache.

Por defecto la raíz está en /Applications/MAMP/htdocs/ pero puede cambiarla a través de la interfaz gráfica MAMP

cd /Applications/MAMP/htdocs/
clon git https://github.com/LINCnil/CookieViz.git

De forma predeterminada, el usuario predeterminado de la base de datos es "raíz" y contraseña "raíz
" Para cambiar la contraseña de forma predet
erminada: https://documentation.mamp.info/en/MAMP-Mac/How-Tos/Change-the-password-of-the-MySQL-root-u
ser/ /Applications/MAMP/Library/bin/mysqladmin -u root -p password

Adición de un usuario phpmyadmin – mysql – usuario 'añadir un usuario' pestaña Cuentas de usuario

Agregué un usuario 'cookvi' con la contraseña 'cookvi'

Edité el archivo settings.inc a través de un editor de texto o nano control

/**
 El servidor de bases de datos utilizado por CookieViz.
 El valor predeterminado es 'localhost' y debe estar bien para la mayoría de los casos.
 Si 'localhost' no funciona y la base de datos se ejecuta localmente, pruebe '127.0.0.1'.
 */
definir ('DB_SERVER', '127.0.0.1:8889');

...

definir ('DB_USER', 'cookvi');

/**
 La contraseña del usuario de la base de datos CookieViz.
 */
definir ('DB_PASSWD', 'cookvi');

Luego edité el archivo nano monitor_mitmdump.php del directorio /soft

cd /Applications/MAMP/htdocs/CookieViz/soft/
nano monitor_mitmdump.php 

Fui a http://localhost:8888/phpmyadmin/ y creé una nueva base CookieViz

Hice clic en la base de datos creada y utilicé la función "importar" y cargué el archivo /Applications/MAMP/htdocs/CookieViz/cookieviz/sql/url_referer-1.sql que contiene la estructura de la tabla

Edite los cuatro valores siguie
ntes $PROXY-HOST – "localhost"; Dirección del servidor p
roxy $PROXY-PORT – "8082"; Puerto del servidor p
roxy $PROXY-USER -""; Nombre de u
suario $PROXY-PASS -""; Contraseña

CookieViz es compatible con php5 y no phpt7 debes esperar cambios en el código:

Reemplazar:

$link - mysql_connect ('localhost', '', '') por $link - mysqli_connect ('127.0.0.1:8889', 'cookvi', 'cookvi','CookieViz') 
mysql_select_db (en lo que mysqli_select_db ($link(cookieViz), ('CookieViz')
mysql_error() de mysqli_connect_error()
mysql_query ($query) de mysqli_query ($link, $query)
mysql_fetch_assoc ($result) por mysqli_fetch_assoc ($result) 
mysql_close ($link) por mysqli_close ($link)  

Inicie un mitmdump de servidor en el puerto 8082
: mitmdump -p 8082 -w mitmdump.log

Ahora estoy lanzando el script php /Applications/MAMP/htdocs/CookieViz/soft/monitor_mitmdump.php

En el nivel firefox entré en conjuntos de preferencias de red en la configuración general y configuré el proxy

Encontramos que tenemos conexiones que pasan a través del servido
r proxy escuchando a http://:8081 127.0.0.1:4
9915: clientconnect 127.0.0.1:4991
5: CONNECT www.youtube.com:443< cannot="" establish
="" tls="" with="" client="" (sni:="" www.youtube.com):="" tlsexception("ssl="" handshake="" error:="" error()")=""[(‘SSL routines’, ‘ssl3_read_bytes’, ‘sslv3 alert bad certificate’)] 12
7.0.0.1:49917:="" clientconnect=""
127.0.0.1:49915:="" clientdisconnect=
"" 127.0.0.1:49917:="" get="" http://detectportal.firefox.com/success.txt
="">< 200="" ok="" 8b="" 127.0
.0.1:49919:="" clientconnect="" 127
.0.0.1:49920:="" clientconnect=""
127.0.0.1:49919:="" get="" http://detectportal.firefox.com/success.txt?ipv4=""
>< 200="" ok="" 8b="" 127.0.0.
1:49920:="" get="" http://detectportal.firefox.com/success.txt?ipv6="">< 200 O
K 8b 200="" ok=""></ 200 OK 8b>

Los resultados se pueden ver en el servidor web http://localhost:8888/CookieViz/cookieviz/

El algoritmo de ordenación del montón de Python en menos de 128 palabras

El principio del algoritmo de ordenación del montón es el siguiente:

  • Buscamos al padre del último nudo del árbol y lo tamitamos: el padre de un nudo en un árbol binario corresponde a la ronda inferior de (i-1)/2 con i la posición del nudo en la tabla que almacena el árbol.
  • Tamizar un nudo implica visitar a su hijo derecho e izquierdo e intercambiar la raíz con la más grande de las dos.
  • El árbol se tamiza hasta que alcanza la raíz, el mayor número del árbol está entonces en la posición de la raíz al principio de la pintura.
  • La raíz que es el número más grande se intercambia con la última hoja (es decir, la posición n de la tabla que almacena el árbol de tamaño n). Este número se considera bien ordenado (es decir, está en la última posición y es el más grande)
  • La operación de tamizado e intercambio se repite considerando el subárbol que va de raíz a n-1 (para no mover el número que se ha ordenado correctamente) hasta que lleguemos al cable izquierdo de la raíz (índice 1)

Ver enlace de wikipedia: https://fr.wikipedia.org/wiki/Tri_par_tas

de la importación matemática
#128mots.com
def indice_fils_gauche (noeud_pere:int):
	retorno (noeud_pere - 2) - 1

def indice_fils_droit (noeud_pere:int):
	retorno (noeud_pere - 2) - 2
#Retourne el índice de nodo pere si existe (el nodo debe ser 0)
def indice_noeud_pere (nudo):
	#Si es el redondeo inferior de (nudo-1)/2
	piso de retorno (nudo - 1)/2)

#permute 2 elementos de una tabla e incrementalmente la variable general compteur_permutation que se inicializará en la mano
def permute (tabla, index1: int, index2:int):
	print ("Permutación del elemento" - str (index1) - "with element" - str (index2))
	print(" Antes de la permutación: " - str (tabla))
	globalcompteur_permutation
	si (index1!2):
	#on copia de seguridad del valor del índice 1 en una variable temporal
		tmp - mesa[indice1]
		tabla[indice1] - tabla[indice2]
		mesa [indice2]- tmp
		compteur_permutation 1
	print(" After permutation: " - str (tabla))

#Tamise un árbol binario de un nudo paramétrico
#1. el nudo se compara con el cable derecho e izquierdo (si existen)
#2. intercambiamos con el valor más alto
#128mots.com
def thames (árbol, nudo, longitud):
	#On visita a la derecha y al hijo izquierdo
	impresión ("Tamisage of" - str (knot) - " tree: " - str (árbol)	
	indexSonRight - indice_fils_droit (nudo)
	IndexLeft - indice_fils_gauche (nudo)
	print ("IndexSonRight" - str (indexSon))
	print ("índice izquierdo"" - str (índice izquierdo)


	si (indexSonRight< longueur): # si le fils droit existe longueur):="" #="" si="" le="" fils="" droit=""></ longueur): # si le fils droit existe>
		si (árb[indiceFilsDroit]ol): #Si[indiceFilsGauche] el hijo derecho es más grande que el cable izquierdo
			si (árb[indiceFilsDroit]ol): #Si[noeud] el alambre derecho es más grande que el nudo tamizado
				permute (árbol, indexSonright,knot)
		elif (árbol [indiceFilsGauche]- árbol): [noeud]#Si el alambre izquierdo es más alto que el nudo tamizado, por lo que se intercambia
			permute (árbol, índice a la izquierda, nudo)
	elif (índice de la izquierda< longueur): #Si le fils gauche existe longueur):="" #si="" le="" fils="" gauche=""></ longueur): #Si le fils gauche existe>
		si (árbol[indiceFilsGauche] - árbol):[noeud] #Si el alambre izquierdo es más alto que el nudo tamizado por lo que intercambiamos
			permute (árbol, índice a la izquierda, nudo)
	print(" Después del tamizado: " - str (árbol))			
#128mots.com

compteur_permutation 0
árbol -[11, 222, 3, 24, 5, 46, 67, 899] #On escribe un árbol en forma de pintura
print ("árbol de inicio: " - str (árbol)

#128mots.com
#Tamisage inicial
#on toma el último elemento del arbe que es una hoja y uno busca a su padre
IndexDuNoeudPere - indice_noeud_pere (árbol)-1) 
#on tamizado se compara con el nudo padre con el hijo derecho e izquierdo
#puis que se intercambia con el valor más alto
para i en el rango (índice DuNoeudPere,-1,-1): #On siftto a la raíz
	thames (árbol,i,len (árbol)

permute (árbol, len (árbol)-1.0) #on intercambia el primer elemento y el último 
#suite tamizado es el mayor valor por lo que se coloca al final de la tabla

#on repite el tamizado
para i en range(len(tree)-1,1,-1): 
	indexDuNoeudPereDeI - indice_noeud_pere (i-1) #on toma el elemento i del arbe que es una hoja y uno busca a su padre
	para j en el rango (índice duKnotPereDeI,-1,-1): #On siftto a la raíz
		thames (árbol, j,i)
	permute (árbol, i-1.0)

impresión ("resultado final de la clasificación: " - str (árbol))
imprimir ("número de permutaciones: " - str(compteur_permutation))