Install this version:
emerge -a =net-analyzer/xsser-1.9
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..14} )
GITHUB_REPOSITORY="epsylon/xsser"
GITHUB_TAG="xsser-v${PV}"
inherit desktop distutils-r1 github-archive
DESCRIPTION="Cross Site Scripter (XSSer) - automatic framework to detect, exploit and report XSS vulnerabilities"
HOMEPAGE="https://xsser.03c8.net"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="amd64 ~arm64 x86"
IUSE="dom gtk"
RDEPEND="
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
dev-python/pycurl[${PYTHON_USEDEP}]
dom? ( dev-python/selenium[${PYTHON_USEDEP}] )
gtk? (
dev-python/pycairo[${PYTHON_USEDEP}]
dev-python/pygeoip[${PYTHON_USEDEP}]
dev-python/pygobject[cairo,${PYTHON_USEDEP}]
dev-python/pillow[${PYTHON_USEDEP}]
x11-libs/gtk+:3[introspection]
)
"
distutils_enable_tests pytest
python_test() {
# test_pdf needs dev-python/fpdf2 which is not packaged in ::gentoo
epytest -k "not test_pdf"
}
src_prepare() {
default
# stop setup.py from (unconditionally) installing its absolute-path
# data_files: under PEP517 wheel installs they are misplaced into
# site-packages/usr/share. src_install below installs them instead.
sed -i \
-e "s| data_files = \[('/usr/share/doc/xsser/', doc_files),| data_files = [],|" \
-e "\|^ ('/usr/share|d" \
setup.py || die
# ship the runtime data files with the core.fuzzing package (upstream
# only installs them via absolute-path data_files) ...
sed -i "s| packages = \['core', 'core.fuzzing', 'core.post', 'core.driver'\],|&\n package_data = {\"core\": [\"fuzzing/*.txt\"]},|" setup.py || die
grep -q 'package_data = ' setup.py || die "failed to add package_data to setup.py"
# ... and read them relative to the module: xsser crashes when it is
# launched outside its source tree otherwise
sed -i \
-e 's|open("core/fuzzing/user-agents.txt")|open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))|g' \
-e "s|open('core/fuzzing/dorks.txt')|open(os.path.join(os.path.dirname(__file__), 'fuzzing', 'dorks.txt'))|g" \
core/main.py core/curlcontrol.py core/dork.py || die
sed -i 's|^import urllib.request, urllib.error, urllib.parse, traceback|import os, urllib.request, urllib.error, urllib.parse, traceback|' core/dork.py || die
grep -q '^import os, urllib' core/dork.py || die "failed to add os import to core/dork.py"
}
src_install() {
distutils-r1_src_install
if use gtk; then
insinto /usr/share/xsser/gtk
doins -r gtk/images gtk/docs gtk/map gtk/xsser.ui
domenu gtk/xsser.desktop
fi
dodoc doc/*
}
Manage flags for this package:
euse -i <flag> -p net-analyzer/xsser |
euse -E <flag> -p net-analyzer/xsser |
euse -D <flag> -p net-analyzer/xsser
dev-python/beautifulsoup4[] dev-python/pycurl[] dom? ( dev-python/selenium[] ) gtk? ( dev-python/pycairo[] dev-python/pygeoip[] dev-python/pygobject[cairo,] dev-python/pillow[] x11-libs/gtk+:3[introspection] )