### Setup Debian Build Environment Source: https://www.privoxy.org/developer-manual/newrelease.html Install necessary build tools and dependencies. ```bash sudo apt install build-essential devscripts sudo apt-get build-dep privoxy ``` ```bash dpkg-checkbuilddeps ``` ```bash sudo apt install foobar ``` -------------------------------- ### Build and Install Privoxy Source: https://www.privoxy.org/user-manual/installation.html Standard sequence of commands to configure, build, and install the software. ```bash autoheader autoconf ./configure # (--help to see options) make # (the make from GNU, sometimes called gmake) su # Possibly required make -n install # (to see where all the files will go) make -s install # (to really install, -s to silence output) ``` -------------------------------- ### Start Privoxy on Debian Source: https://www.privoxy.org/user-manual/startup.html Use the init script to start the Privoxy service on Debian systems. ```bash # /etc/init.d/privoxy start ``` -------------------------------- ### Start Privoxy on FreeBSD and ElectroBSD Source: https://www.privoxy.org/user-manual/startup.html Manually start the Privoxy service using the service command. ```bash # service privoxy onestart ``` -------------------------------- ### Start Privoxy on Unix Derivatives Source: https://www.privoxy.org/user-manual/startup.html Manually start Privoxy by specifying the user and configuration file path. ```bash # /usr/sbin/privoxy --user privoxy /etc/privoxy/config ``` -------------------------------- ### Path Pattern Examples Source: https://www.privoxy.org/user-manual/actions-file.html Examples of POSIX regular expressions used for matching URL paths in Privoxy configuration. ```text .example.com/.* ``` ```text .example.com/.*/index.html$ ``` ```text .example.com/(.*/)?index\.html$ ``` ```text .example.com/(.*/)(ads|banners?|junk) ``` ```text .example.com/(.*/)(ads|banners?|junk)/.*\.(jpe?g|gif|png)$ ``` -------------------------------- ### Install with User Ownership Source: https://www.privoxy.org/user-manual/installation.html Specify the user and group ownership for configuration files during the installation process. ```bash make -s install USER=privoxy GROUP=privoxy ``` -------------------------------- ### Configure with Custom Flags Source: https://www.privoxy.org/user-manual/installation.html Example of setting environment variables before running the configure script. ```bash $ export CFLAGS="-O2" # set gcc optimization level $ export LDFLAGS="-Wl,--nxcompat" # Enable DEP $ ./configure --host=i686-w64-mingw32 --enable-mingw32 --enable-zlib \ > --enable-static-linking --disable-pthread $ make # build Privoxy ``` -------------------------------- ### Sign Windows Release Files Source: https://www.privoxy.org/developer-manual/newrelease.html GPG sign the installer and zip files before uploading. ```bash gpg --armor --detach --sign `privoxy_setup_X.Y.Z.exe` gpg --armor --detach --sign `privoxy_X.Y.Z.zip` ``` -------------------------------- ### Configure System User Source: https://www.privoxy.org/user-manual/installation.html Example entries for system configuration files to define a dedicated unprivileged user for Privoxy. ```text privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell ``` ```text privoxy:*:7777: ``` -------------------------------- ### Configure Language and User Agent Source: https://www.privoxy.org/user-manual/actions-file.html Example of setting custom Accept-Language and User-Agent headers for a specific path. ```text # Pretend to use Canadian language settings. {+hide-accept-language{en-ca} \ +hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \ } / ``` -------------------------------- ### Compression and Filter Configuration Source: https://www.privoxy.org/user-manual/actions-file.html Example of applying filters and compression settings to specific domains or globally. ```text # Selectively turn off compression, and enable a filter # { +filter{tiny-textforms} +prevent-compression } # Match only these sites .google. sourceforge.net sf.net # Or instead, we could set a universal default: # { +prevent-compression } / # Match all sites # Then maybe make exceptions for broken sites: # { -prevent-compression } .compusa.com/ ``` -------------------------------- ### Configure Forwarding Rules Source: https://www.privoxy.org/user-manual/config.html Examples demonstrating how to route traffic through parent proxies or bypass them for specific domains and protocols. ```text forward / parent-proxy.example.org:8080 forward :443 . ``` ```text forward / caching-proxy.isp.example.net:8000 forward .isp.example.net . ``` ```text forward / [2001:DB8::1]:8000 ``` ```text forward / parent-proxy.example.org:8000 forward ipv6-server.example.org . forward <[2-3][0-9a-f][0-9a-f][0-9a-f]:*> . ``` -------------------------------- ### Configure hide-referrer action Source: https://www.privoxy.org/user-manual/actions-file.html Examples of forging or setting a custom Referer header. ```Privoxy Configuration +hide-referrer{forge} ``` ```Privoxy Configuration +hide-referrer{http://www.yahoo.com/} ``` -------------------------------- ### Inspect URL Action Matches Source: https://www.privoxy.org/user-manual/appendix.html Example output from the Privoxy show-url-info page showing how default and custom actions are applied to a specific domain. ```text Matches for http://www.google.com: In file: default.action [ View ] [ Edit ] {+change-x-forwarded-for{block} +deanimate-gifs {last} +fast-redirects {check-decoded-url} +filter {refresh-tags} +filter {img-reorder} +filter {banners-by-size} +filter {webbugs} +filter {jumping-windows} +hide-from-header {block} +hide-referrer {forge} +session-cookies-only +set-image-blocker {pattern} } / { -session-cookies-only } .google.com { -fast-redirects } .google.com In file: user.action [ View ] [ Edit ] (no matches in this file) ``` -------------------------------- ### Configure hide-from-header action Source: https://www.privoxy.org/user-manual/actions-file.html Examples of removing or replacing the From HTTP header. ```Privoxy Configuration +hide-from-header{block} ``` ```Privoxy Configuration +hide-from-header{spam-me-senseless@sittingduck.example.com} ``` -------------------------------- ### Defining Action Sections Source: https://www.privoxy.org/user-manual/actions-file.html Example of a regular action section applying multiple actions to specific URL patterns. ```text { +`handle-as-image` +`block{Banner ads.}` } # Block these as if they were images. Send no block page. banners.example.com media.example.com/.*banners .example.com/images/ads/ ``` -------------------------------- ### Set global image blocker Source: https://www.privoxy.org/user-manual/actions-file.html Configure the default image blocking behavior for all sites. This example sets the blocker to display a blank image instead of a checkerboard pattern. ```text { +set-image-blocker{blank} } / # ALL sites ``` -------------------------------- ### Configure hide-user-agent action Source: https://www.privoxy.org/user-manual/actions-file.html Example of setting a custom User-Agent string to conceal browser and OS information. ```Privoxy Configuration +hide-user-agent{Mozilla/5.0 (X11; ElectroBSD i386; rv:78.0) Gecko/20100101 Firefox/78.0} ``` -------------------------------- ### Perform a merge-free Git workflow Source: https://www.privoxy.org/developer-manual/git.html Example session demonstrating how to create a local branch, commit changes, and rebase onto the master branch to maintain a clean history. ```bash fk@t520 ~/git/privoxy $git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. # Make sure you have the latest changes fk@t520 ~/git/privoxy $git pull Already up to date. # Create a local banch for changes fk@t520 ~/git/privoxy $git checkout -b local-branch Switched to a new branch 'local-branch' # Create some change fk@t520 ~/git/privoxy $gmake dok dok-tidy [...] # Review your change fk@t520 ~/git/privoxy $git diff [...] # Commit your changes if they look goood fk@t520 ~/git/privoxy $git commit -m "developer-manual: Regenerate" doc/webserver/ [local-branch 1abb7316] developer-manual: Regenerate 1 file changed, 2 insertions(+), 2 deletions(-) # Review your commit fk@t520 ~/git/privoxy $git show [...] # Go to the master branch fk@t520 ~/git/privoxy $git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. # Make sure you are still in sync fk@t520 ~/git/privoxy $git pull [...] Already up to date. # Apply the commit you made to the local-branch fk@t520 ~/git/privoxy $git cherry-pick local-branch [master 046e85e2] developer-manual: Regenerate Date: Tue Dec 15 05:10:07 2020 +0100 1 file changed, 2 insertions(+), 2 deletions(-) # Make sure the history looks as expected fk@t520 ~/git/privoxy $git log -p # Finally push your change to the Privoxy repository fk@t520 ~/git/privoxy $git push [...] # Go back to the local branch fk@t520 ~/git/privoxy $git checkout local-branch # Rebase on top of master and continue hacking fk@t520 ~/git/privoxy $git rebase master Successfully rebased and updated refs/heads/local-branch. ``` -------------------------------- ### Redirecting Requests with Privoxy Actions Source: https://www.privoxy.org/user-manual/actions-file.html Examples of using the redirect action to map old URLs to new locations or local configurations. ```text # Redirect requests for the old Tor Hidden Service of the Privoxy website to the new one {+redirect{s@^http://jvauzb4sb3bwlsnc.onion/@http://privoxy5wtwbtk4wwyrdbg6oxeghvhghghmokcx2iawydkqmaztfbbid.onion/@}} jvauzb4sb3bwlsnc.onion/ # Redirect remote requests for this manual # to the local version delivered by Privoxy {+redirect{s@^http://www@http://config@}} www.privoxy.org/user-manual/ ``` -------------------------------- ### Automated Build Source: https://www.privoxy.org/user-manual/installation.html Use the make command to automatically execute the initial configuration and build steps. ```bash make ``` -------------------------------- ### Configuring the source build Source: https://www.privoxy.org/developer-manual/newrelease.html Prepare the build environment by generating configuration scripts from a clean source directory. ```bash autoheader && autoconf && ./configure ``` -------------------------------- ### Upload to Webserver Source: https://www.privoxy.org/developer-manual/webserver-update.html Uploads documentation to the SourceForge webserver and sets correct file permissions. Use only this method to avoid permission issues. ```bash make webserver ``` -------------------------------- ### Rebuild Documentation Source: https://www.privoxy.org/developer-manual/newrelease.html Execute these make targets to rebuild the man pages, configuration files, and general documentation. ```bash $ make man $ make dok $ make dok-man $ make dok-tidy $ make config-file ``` -------------------------------- ### Common Configure Options Source: https://www.privoxy.org/user-manual/installation.html Standard configuration flags for native Windows builds under Cygwin. ```bash --host=i686-w64-mingw32 --enable-mingw32 --enable-zlib --enable-static-linking --disable-pthread --with-brotli --with-mbedtls ``` -------------------------------- ### Define block action with reason Source: https://www.privoxy.org/user-manual/appendix.html Example of a block action that includes a descriptive reason for the block. ```text { +block{Path starts with "ads".} +handle-as-image } /ads ``` -------------------------------- ### Disable Content-Disposition Header Source: https://www.privoxy.org/user-manual/actions-file.html Example of using hide-content-disposition to prevent forced downloads on specific domains. ```text # Disarm the download link in Sourceforge's patch tracker { -filter \ +content-type-overwrite{text/plain} \ +hide-content-disposition{block} \ } .sourceforge.net/tracker/download\.php ``` -------------------------------- ### Disable Pop-up Filters for Specific Domains Source: https://www.privoxy.org/user-manual/actions-file.html Example configuration to disable pop-up filtering for specific e-commerce domains. ```text # These shops require pop-ups: # {-filter{all-popups} -filter{unsolicited-popups}} .dabs.com .overclockers.co.uk ``` -------------------------------- ### Run Privoxy config as administrator on Windows Source: https://www.privoxy.org/faq/trouble.html Use the runas command to open the configuration file with elevated privileges. ```cmd runas /user:administrator "notepad \privoxy\config.txt" ``` -------------------------------- ### Request Tag Pattern Syntax Source: https://www.privoxy.org/user-manual/actions-file.html Examples of patterns used to match request tags, which must be prefixed with TAG:. ```text TAG:^foo$ ``` ```text TAG:foo ``` ```text TAG: foo ``` -------------------------------- ### Configure the configuration directory Source: https://www.privoxy.org/user-manual/config.html Sets the base directory for Privoxy configuration files. ```text confdir /etc/privoxy ``` -------------------------------- ### Build and Test Debian Package Source: https://www.privoxy.org/developer-manual/newrelease.html Build the package and verify it using lintian, cowbuilder, and autopkgtest. ```bash gbp buildpackage -us -uc ``` ```bash lintian -iI ../build-area/privoxy_4.2.0-1_amd64.changes ``` ```bash sudo cowbuilder --build --basepath /var/cache/pbuilder/base.cow ../build-area/privoxy_4.2.0-1.dsc ``` ```bash autopkgtest /var/cache/pbuilder/result/privoxy_4.2.0-1_amd64.changes -s -- schroot sid ``` -------------------------------- ### Standard GNU Autotools Build Process Source: https://www.privoxy.org/user-manual/installation.html General workflow for building software using GNU Autotools. ```bash autoheader # creates config.h.in autoconf # uses config.h.in to create the configure shell script ./configure [options] # creates GNUmakefile make [options] # builds the program ``` -------------------------------- ### Avoid redundant or inaccurate comments Source: https://www.privoxy.org/developer-manual/coding.html Examples of comments that either state the obvious or contradict the actual logic of the code. ```c /* if page size greater than 1k ... */ if (page_length() > 1024) { ... "block" the page up ... } /* if page size is small, send it in blocks */ if (page_length() > 1024) { ... "block" the page up ... } ``` -------------------------------- ### Generate Documentation Source: https://www.privoxy.org/developer-manual/webserver-update.html Generates documentation files from SGML sources. Run this after modifying stable-branch documentation. ```bash make dok && make dok-tidy ``` -------------------------------- ### Configure header modification for tracking protection Source: https://www.privoxy.org/user-manual/actions-file.html Example of combining multiple header modification actions to reduce tracking. ```Privoxy Configuration {+hide-if-modified-since{-60} \ +overwrite-last-modified{randomize} \ +crunch-if-none-match} / ``` -------------------------------- ### Build Windows Package Source: https://www.privoxy.org/developer-manual/newrelease.html Execute the build process within the windows directory. ```bash cd windows make ``` -------------------------------- ### Define a content filter header Source: https://www.privoxy.org/user-manual/filter-file.html Example of a header line for a content filter named 'foo' that replaces 'foo' with 'bar'. ```text FILTER: foo Replace all "foo" with "bar" ``` -------------------------------- ### Define Client Tags in Configuration Source: https://www.privoxy.org/user-manual/howto.html Register tag names and descriptions in the Privoxy configuration file to make them available for use. ```text client-specific-tag tor Use Tor anonymous proxy client-specific-tag https-inspection Enable https-inspection ``` -------------------------------- ### Block Content Actions Source: https://www.privoxy.org/user-manual/actions-file.html Examples of blocking content with different replacement strategies, such as showing a block page, an image, or an empty document. ```text {+block{No nasty stuff for you.}} # Block and replace with "blocked" page .nasty-stuff.example.com {+block{Doubleclick banners.} +handle-as-image} # Block and replace with image .ad.doubleclick.net .ads.r.us/banners/ {+block{Layered ads.} +handle-as-empty-document} # Block and then ignore adserver.example.net/.*\.js$ ``` -------------------------------- ### Tagging and Filtering Requests Source: https://www.privoxy.org/user-manual/actions-file.html Examples of using server-header taggers to identify content types and applying external filters based on tags. ```Privoxy Configuration # Tag every request with the content type declared by the server {+server-header-tagger{content-type}} / # If the response has a tag starting with 'image/' enable an external # filter that only applies to images. # # Note that the filter is not available by default, it's just a # `silly example`. {+external-filter{rotate-image} +force-text-mode} TAG:^image/ ``` -------------------------------- ### Clone Debian Repository Source: https://www.privoxy.org/developer-manual/newrelease.html Initialize or update the local Debian repository using gbp. ```bash gbp clone https://salsa.debian.org/debian/privoxy.git cd privoxy ``` ```bash cd privoxy gbp pull ``` -------------------------------- ### Define external filters in Privoxy Source: https://www.privoxy.org/user-manual/filter-file.html Examples of defining external filters using the EXTERNAL-FILTER directive. These filters can be simple commands or shell scripts. ```text EXTERNAL-FILTER: cat Pointless example filter that doesn't actually modify the content /bin/cat # Incorrect reimplementation of the filter above in POSIX shell. # # Note that it's a single job that spans multiple lines, the line # breaks are not passed to the shell, thus the semicolons are required. # # If the script isn't trivial, it is recommended to put it into an external file. # # In general, writing external filters entirely in POSIX shell is not # considered a good idea. EXTERNAL-FILTER: cat2 Pointless example filter that despite its name may actually modify the content while read line; \ do \ echo "$line"; \ done EXTERNAL-FILTER: rotate-image Rotate an image by 180 degree. Test filter with limited value. /usr/local/bin/convert - -rotate 180 - EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The coordinates may need adjustment. /usr/local/bin/convert - -pointsize 16 -fill white -annotate +17+418 "[citation needed]" - ``` -------------------------------- ### Build Privoxy Executable Source: https://www.privoxy.org/user-manual/installation.html Command to build the Privoxy executable directly. ```bash cd /privoxy ./windows/MYconfigure && make ``` -------------------------------- ### Include Header Files Source: https://www.privoxy.org/developer-manual/coding.html Use local paths for project headers and avoid absolute paths unless necessary for system headers. ```c #include /* This is not a local include */ #include "config.h" /* This IS a local include */ ``` ```c /* This is not a local include, but requires a path element. */ #include ``` -------------------------------- ### Tagging and Forwarding Overrides Source: https://www.privoxy.org/user-manual/actions-file.html Examples of using client-header-tagger to identify specific user agents or request types and applying conditional forwarding or header modifications. ```Privoxy Configuration # Tag every request with the User-Agent header {+client-header-tagger{user-agent}} / # Tagging itself doesn't change the action # settings, sections with TAG patterns do: # # If it's a download agent, use a different forwarding proxy, # show the real User-Agent and make sure resume works. {+forward-override{forward-socks5 10.0.0.2:2222 .} \ -hide-if-modified-since \ -overwrite-last-modified \ -hide-user-agent \ -filter \ -deanimate-gifs \ } TAG:^User-Agent: NetBSD-ftp/ TAG:^User-Agent: Novell ZYPP Installer TAG:^User-Agent: RPM APT-HTTP/ TAG:^User-Agent: fetch libfetch/ TAG:^User-Agent: Ubuntu APT-HTTP/ TAG:^User-Agent: MPlayer/ ``` ```Privoxy Configuration # Tag all requests with the Range header set {+client-header-tagger{range-requests}} / # Disable filtering for the tagged requests. # # With filtering enabled Privoxy would remove the Range headers # to be able to filter the whole response. The downside is that # it prevents clients from resuming downloads or skipping over # parts of multimedia files. {-filter -deanimate-gifs} TAG:^RANGE-REQUEST$ ``` ```Privoxy Configuration # Tag all requests with the client IP address # # (Technically the client IP address isn't included in the # client headers but client-header taggers can set it anyway. # For details see the tagger in default.filter) {+client-header-tagger{client-ip-address}} / # Change forwarding settings for requests coming from address 10.0.0.1 {+forward-override{forward-socks5 127.0.1.2:2222 .}} TAG:^IP-ADDRESS: 10\.0\.0\.1$ ``` -------------------------------- ### Build Debian Snapshot Source: https://www.privoxy.org/developer-manual/newrelease.html Update changelog and build the package from the git tree. ```bash dch ``` ```bash debuild -us -uc -b ``` -------------------------------- ### Define Global Default Actions Source: https://www.privoxy.org/user-manual/actions-file.html Configuration for match-all.action to set default behavior for all URLs using line continuation. ```text { \ +change-x-forwarded-for{block} \ +hide-from-header{block} \ +set-image-blocker{pattern} \ } / # Match all URLs ``` -------------------------------- ### Build Tidy HTML5 Source: https://www.privoxy.org/user-manual/installation.html Steps to build the Tidy library required for documentation generation. ```bash cd cd tidy-html5-x.y.z/build/cmake cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local make && make install ``` -------------------------------- ### Configure the user-manual location Source: https://www.privoxy.org/user-manual/config.html Defines the URI for the Privoxy User Manual. This should be the first option in the configuration file. ```text user-manual /usr/share/doc/privoxy/user-manual ``` ```text user-manual http://example.com/privoxy/user-manual/ ``` -------------------------------- ### Clone Privoxy Source Code Source: https://www.privoxy.org/user-manual/installation.html Commands to create a root directory and clone the Privoxy repository. ```bash mkdir cd git clone https://www.privoxy.org/git/privoxy.git ``` -------------------------------- ### Creating the source tarball Source: https://www.privoxy.org/developer-manual/newrelease.html Execute the make target to generate the distribution tarball after configuration. ```bash make tarball-dist ``` -------------------------------- ### Rebuild configuration and documentation Source: https://www.privoxy.org/developer-manual/newrelease.html Commands used to update build files and documentation after incrementing the version number. ```bash autoheader && autoconf ``` ```bash ./configure ``` ```bash make dok-release ``` -------------------------------- ### Generate Privoxy CA Certificate and Key Source: https://www.privoxy.org/user-manual/howto.html Use OpenSSL to create the private key and certificate for the Privoxy CA. ```bash openssl req -new -x509 -extensions v3_ca -keyout privoxy.pem -out privoxy.crt -days 3650 ``` -------------------------------- ### Define header file prototypes Source: https://www.privoxy.org/developer-manual/coding.html Use descriptive parameter names in header file prototypes that match the implementation in the .c file. ```C (.h) extern int load_aclfile(struct client_state *csp); (.c) int load_aclfile(struct client_state *csp) ``` ```C (.h) extern int load_aclfile(struct client_state *); or (.h) extern int load_aclfile(); (.c) int load_aclfile(struct client_state *csp) ``` -------------------------------- ### Build Brotli Library Source: https://www.privoxy.org/user-manual/installation.html Compilation commands for the static Brotli library. ```bash ./bootstrap # to create the GNU autotools files autoconf export CFLAGS="-O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2" export LDFLAGS="${LDFLAGS} -fstack-protector-strong" ./configure --host=i686-w64-mingw32 \ --prefix=/usr/local/i686-w64-mingw32 \ --enable-static \ --disable-shared \ --with-gnu-ld \ --disable-silent-rules \ && make ``` -------------------------------- ### Configure and run Privoxy for fuzzing Source: https://www.privoxy.org/developer-manual/testing.html Commands to compile Privoxy with instrumentation and execute it in fuzzing mode. ```bash # Compile Privoxy with instrumentation for afl $ export CC=afl-clang $ export CFLAGS="-fsanitize=address -ggdb" $ export CPPFLAGS=-I/usr/local/include/ $ export LDFLAGS="-fsanitize=address -L/usr/local/lib" $ export AFL_USE_ASAN=1 $ export AFL_HARDEN=1 $ ./configure --with-debug --enable-extended-host-patterns --enable-accept-filter --enable-no-gifs --enable-compression --enable-strptime-sanity-checks --enable-external-filters --enable-fuzz $ ./privoxy --fuzz Privoxy version 3.0.24 (http://www.privoxy.org/) Usage: ./privoxy [--config-test] [--chroot] [--help] [--no-daemon] [--pidfile pidfile] [--pre-chroot-nslookup hostname] [--user user[.group]] [--version] [configfile] ./privoxy --fuzz fuzz-mode ./path/to/fuzzed/input [--stfu] Supported fuzz modes and the expected input: action: Text to parse as action file. client-request: Client request to parse. Currently incomplete client-header: Client header to parse. chunked-transfer-encoding: Chunk-encoded data to dechunk. deflate: deflate-compressed data to decompress. filter: Text to parse as filter file. gif: gif to deanimate. gzip: gzip-compressed data to decompress. pcrs-substitute: A pcrs-substitute to compile. Not a whole pcrs job! Example: Bla $1 bla C $3 blah. server-header: Server header to parse. server-response: Server response to parse. The following fuzz modes read data from stdin if the 'file' is '-' client-request client-header chunked-transfer-encoding deflate gif gzip pcrs-substitute server-header server-response Aborting $ export ASAN_OPTIONS='abort_on_error=1' $ mkdir input output $ echo '$1 bla fasel $2' > input/pcrs $ afl-fuzz -i input -o output -m none ~/git/privoxy/privoxy --fuzz pcrs-substitute - --stfu $ cat >input/pcrs.txt FILTER: bla fasel s@(.{1})[432](\d+)@$1$2$hostname@UgisT $ afl-fuzz -i input/ -o output/ -f bla.filter -m none privoxy --fuzz filter bla.filter --stfu ``` -------------------------------- ### Enable Debugging Options Source: https://www.privoxy.org/faq/contact.html Configuration directive to enable detailed logging for troubleshooting requests. ```text debug 1 # Log the destination for each request. See also debug 1024. ``` -------------------------------- ### Configure Localhost Exception Source: https://www.privoxy.org/faq/misc.html Add this exception to allow the browser to resolve and reach local network servers by name. ```text # forward localhost/ . ``` -------------------------------- ### Rebuild Configuration Files Source: https://www.privoxy.org/developer-manual/newrelease.html Use these commands to regenerate the configure script and GNUmakefile after updating version status. ```bash $ autoheader && autoconf # rebuild configure $ ./configure # rebuild GNUmakefile ```