Paper: Privacy vs. Profit: The Impact of Google's Manifest Version 3 (MV3) Update on Ad Blocker Effectiveness
Authors: Karlo Lukic, Lazaros Papadopoulos
Badges Applied For: Available, Functional, Reproduced
This artifact contains the datasets, analysis scripts, and browser extensions used in our study comparing MV2 and MV3 ad blocker effectiveness. The R analysis scripts reproduce all figures and tables presented in the paper from the provided processed datasets.
This artifact contains browser extensions (ad blockers) that were used for research purposes. The extensions are publicly available versions from official sources. No personal data or credentials are included.
The artifact is publicly available at:
| Resource | URL |
|---|---|
| GitHub Repository | lukic-papadopoulos-research/impact_of_google_mv3_update_on_ad_blocker_effectiveness |
This artifact is released under the MIT License (see LICENSE).
The artifact contains all materials needed to reproduce the analysis presented in the paper:
- Processed datasets from our browser-based experiment
- R scripts that generate all figures and tables
- Browser extensions used in the study
- Data collection scripts (for methodology transparency)
- Any modern computer capable of running Docker or R 4.4+
- Minimum 8 GB RAM recommended
- ~500 MB disk space for the repository
Option A: Docker (Recommended)
- Docker Engine 20.10+ (install guide)
Option B: Native R
- R 4.4+ (download)
- renv (R package manager, included in repository)
- gfortran (required for compiling some R packages)
All R package dependencies are pinned in renv.lock with exact versions.
# Clone the repository
git clone https://github.com/karlolukic/impact-of-google-mv3-on-ad-blocker-effectivenesss.git
cd impact-of-google-mv3-on-ad-blocker-effectivenesss
# Build the Docker image (~20 minutes)
docker build -t mv3-artifact .
# Run the analysis and generate outputs (~5 minutes)
docker run --rm -v $(pwd)/03_results:/artifact/03_results mv3-artifact
# Verify outputs match reference checksums
docker run --rm mv3-artifact Rscript verify_outputs.R# Clone the repository
git clone https://github.com/karlolukic/impact-of-google-mv3-on-ad-blocker-effectivenesss.git
cd impact-of-google-mv3-on-ad-blocker-effectivenesss# In R console:
renv::restore() # Install exact package versions (~10 minutes)
source("02_scripts/02_R/reproducible_analysis.R") # Run analysis (~5 minutes)After running the analysis:
03_results/01_figure.pdfthrough03_results/10_figure.pdf(10 figures)03_results/01_table.texthrough03_results/06_table.tex(6 LaTeX tables)
The artifact includes automated verification:
docker run --rm mv3-artifact Rscript verify_outputs.RThis verifies:
- MD5 checksums for all
.texfiles (deterministic text output) - Existence of all
.pdffiles (binary output may vary slightly across systems)
The paper's main claims can be reproduced by running a single script. All quantitative results should match exactly (within floating-point precision) because the same datasets, code, and package versions are used.
| Paper Element | Claim | Command | Output File | Verification |
|---|---|---|---|---|
| Section 4.1 | Sample: 1,000 websites × 9 browser instances = 9,000 observations | nrow(blocker_effectiveness_df) |
Console | Equals 9,000 |
| Figure 3 | Distribution of blocked ads/trackers by ad blocker | source("02_scripts/02_R/reproducible_analysis.R") |
03_results/03_figure.pdf |
Visual comparison with paper |
| Figure 4 | MV2 vs MV3 effectiveness comparison | source("02_scripts/02_R/reproducible_analysis.R") |
03_results/04_figure.pdf |
Visual comparison with paper |
| Table 2 | Summary statistics (mean, SD, median) | source("02_scripts/02_R/reproducible_analysis.R") |
03_results/02_table.tex |
Values match paper Table 2 |
| Section 4.3 | No statistically significant difference (t-tests, p > 0.05) | source("02_scripts/02_R/reproducible_analysis.R") |
Console output | p-values and effect sizes match paper |
- Quantitative results: Expected to match exactly (same data + same code + same package versions)
- Statistical values: All p-values, effect sizes, means, and standard deviations should be identical to paper values
- Figures: Generated PDFs should be visually identical to paper figures
- Tables: LaTeX output verified via MD5 checksums against reference values
Results that differ by more than 5% from paper values indicate a problem with the execution environment.
-
Build environment (Docker recommended):
docker build -t mv3-artifact . -
Run complete analysis:
docker run --rm -v $(pwd)/03_results:/artifact/03_results mv3-artifact -
Verify outputs:
docker run --rm mv3-artifact Rscript verify_outputs.R
Expected output:
[SUCCESS] All outputs verified successfully! -
Compare results:
- Open generated PDFs in
03_results/and compare to paper figures - Open generated
.texfiles and compare values to paper tables - Check console output for statistical test results
- Open generated PDFs in
The analysis is available in three equivalent formats for flexibility:
| Format | File | Use Case |
|---|---|---|
| R Script | 02_scripts/02_R/reproducible_analysis.R |
Batch execution |
| Quarto | 02_scripts/02_R/reproducible_analysis.qmd |
Literate programming |
| Jupyter | 02_scripts/02_R/reproducible_analysis.ipynb |
Interactive exploration |
├── 01_data/
│ ├── blocker_effectiveness_df.rds # Main dataset (9,000 observations)
│ ├── runs_stats_df.rds # Crawling statistics
│ ├── 01_table.xlsx # Ad blocker overview data
│ └── extensions/ # Browser extensions used
├── 02_scripts/
│ ├── 01_py/ # Python crawler scripts (methodology)
│ └── 02_R/
│ ├── helper_functions.R # Utility functions
│ ├── reproducible_analysis.R # Main analysis script
│ ├── reproducible_analysis.qmd # Quarto version
│ └── reproducible_analysis.ipynb # Jupyter version
├── 03_results/
│ ├── *.pdf # Generated figures (10 files)
│ ├── *.tex # Generated LaTeX tables (6 files)
│ └── checksums.md5 # Reference checksums
├── Dockerfile # Reproducible build environment
├── renv.lock # Pinned R package versions
├── verify_outputs.R # Automated verification script
└── ARTIFACT-APPENDIX.md # This file
The Python crawler scripts document the methodology used for data collection. These scripts may not reproduce the exact data collection today because:
- Chrome browser and extension APIs have been updated since data collection
- Website content changes over time
- Ad/tracker presence varies dynamically
The scripts are included for transparency and methodology documentation. The core reproducible artifact is the R analysis.
The R analysis is fully reproducible and generates all paper figures and tables from the provided datasets. Please make sure the 03_results directory contains 01_figure.pdf and 02_figure.pdf to fully render all graphs.
- Primary focus: Reproducibility of analysis (datasets → figures/tables)
- Data collection: Methodology documented but raw data collection not reproducible due to web dynamics
- All statistical results, figures, and tables can be exactly reproduced
- GitHub Actions CI: Automatically verifies reproducibility on every commit
- Interactive discussion: Please open GitHub issues for any questions
- Artifact version: 1.0
- Paper version: PoPETs 2026, Issue 1
- Last updated: November 2025