
Una colección actualizada de recursos centrados en la explotación de navegadores.
El mundo de los navegadores está dominado por 4 actores principales:
Lo siguiente está dividido en dos partes:
Por supuesto, puedes usar tu configuración favorita para navegar por el código fuente. Sin embargo, esos repositorios son relativamente grandes y probé varias configuraciones diferentes hasta que encontré algo que funcionó para mí. Así que si aún no tienes una buena configuración, aquí tienes algunas de mis experiencias que podrían ayudarte:
Artículos:
El motor de JavaScript de Blink es V8.
Compilar (Ubuntu 18.04):
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:./depot_tools
$ gclient
$ mkdir ./v8 && cd ./v8
$ fetch v8 && cd v8
$ git pull
$ gclient sync
$ ./build/install-build-deps.sh
$ tools/dev/gm.py x64.release
$ out/x64.release/d8
Flags útiles:
--print-opt-code: código generado por el compilador optimizador--print-byte-code: bytecode generado por el intérprete--trace-ic: diferentes tipos de objeto que encuentra un sitio de llamada--trace-opt y --trace-deopt: qué funciones son (des)optimizadas--trace-turbo: trazas de TurboFan para la visualización de TurbolizerArtículos:
V8 proporciona una visualización para TurboFan llamada Turbolizer
Artículos:
--trace-turbo: d8 --trace-turbo foo.jsturbo-foo-0.jsonv8/tools/turbolizer e instala con npm como se describe en README.mdpython -m SimpleHTTPServer 8000localhost:8000 y abre turbo-foo-0.jsonEl motor de JavaScript de Gecko es Spidermonkey.
Compilar (Ubuntu 18.04):
$ wget -O bootstrap.py https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
$ git clone https://github.com/mozilla/gecko-dev.git && cd gecko-dev
$ cd js/src
$ autoconf2.13
# Este nombre debe terminar en "_DBG.OBJ" para que el sistema de control de versiones lo ignore.
$ mkdir build_DBG.OBJ
$ cd build_DBG.OBJ
$ ../configure --enable-debug --disable-optimize
# Usa "mozmake" en Windows
$ make -j 6
$ js/src/js
Spidermonkey proporciona una visualización para IonMonkey llamada IonGraph
El motor de JavaScript de Webkit es JavaScriptCore (JSC).
Artículos:
# sudo apt install libicu-dev python ruby bison flex cmake build-essential ninja-build git gperf
$ git clone git://git.webkit.org/WebKit.git && cd WebKit
$ Tools/gtk/install-dependencies
$ Tools/Scripts/build-webkit --jsc-only --debug
$ cd WebKitBuild/Release
$ LD_LIBRARY_PATH=./lib bin/jsc
WebKit tiene un sistema de compilador JIT de 4 capas, que representa el equilibrio entre el costo de rendimiento general y el beneficio de rendimiento.
Artículos:
Desde que Edge cambió a Blink y al Proyecto Chromium como su motor de renderizado, Edge usa v8. Originalmente, Edge tenía su propio motor de renderizado llamado EdgeHTML, que usaba el motor de JavaScript ChakraCore.
# Para compilar ChakraCore en Linux: (requiere Clang 3.7+ y Python 2)
$ apt-get install -y git build-essential cmake clang libicu-dev libunwind8-dev
$ git clone https://github.com/Microsoft/ChakraCore && cd ChakraCore
$ ./build.sh --cc=/usr/bin/clang-3.9 --cxx=/usr/bin/clang++-3.9 --arch=amd64 --debug
$ out/Debug/ch