Getting started
If you feel that something is missing, feel free to submit an issue or edit this page on GitHub.
The basics
Before starting to play with PyFunceble, the first recommended action is to read the version to be sure that everything is expected to work as it should.
To do that simple execute:
Testing modes
PyFunceble provides 3 testing modes, that you can't use in parallel. You must choose one of the provided testing modes in order for PyFunceble to produce outputs.
Test Mode | Description | Argument | Configuration Parameter |
---|---|---|---|
Availability | This is the default mode. It exists to help us find the availability / reachability of subjects. |
None, Default | cli_testing.testing_mode.availability |
Syntax | This is the mode that exclusively check whether the inputed subjects are VALID or INVALID. | --syntax |
cli_testing.testing_mode.syntax |
Reputation | This is the mode that exclusively check whether the inputed subjects have a bad reputation by checking against the OTX IP reputation list. | --reputation |
cli_testing.testing_mode.reputation |
Input Sources
PyFunceble expects you to provide the information needed for launching tests. Therefore, it is important that you understand the different way to input tests subjects into PyFunceble.
PyFunceble has 2 (direct) ways to directly get inputs from operators:
- Inline: You manually type what you want to be tested.
- Files: You give PyFunceble a path to the file that you want to be decoded and tested.
Inline: The Quick Way!
The "inline" input, describes the process of manually listing the subjects PyFunceble has to test. This can be done through the following arguments:
Argument | Multiple Possible | Example | Description |
---|---|---|---|
-d , --domain |
✔️ | -d example.com 192.0.43.7 github.com |
Inputs a list of domains or IPs to test. |
-u , --url |
✔️ | -u https://example.com http://192.0.43.7 https://github.com |
Inputs a list of URLs to test. |
File: The Managable Way!
The "files" input, describes the process of input a local or remote path to a file that PyFunceble has to read (or download), decode and test. This can be done through the following arguments:
Argument | Multiple Possible | Expected Input Format | Example | Description |
---|---|---|---|---|
-f , --file |
✔️ | Hosts File / Plain Text | -f ./domains.list https://example.org/my/blocklist |
Input a hosts file or plain text file that PyFunceble has to read and test. |
-uf , --url-files |
✔️ | Plain Text | -uf ./urls.list https://example.org/my/urls.txt |
Input a plain text file that PyFunceble has to read and test. |
PyFunceble can decode multiple formats. You can influence the decoding mechanism by using ONE of the following arguments:
Warning
Only one decoding method at a time is supported.
Argument | Configuration Parameter | Description |
---|---|---|
--adblock |
cli_decoding.adblock |
Forces PyFunceble to assume that the inputed file is an AdBlock filter list. |
--rpz |
cli_decoding.rpz |
Forces PyFunceble to assume that the inputed file is an RPZ formatted file. |
You can force PyFunceble to to some extra steps while decoding files - in order to test what you really want. This can be done through the following arguments.
Argument | Configuration Parameter | Description |
---|---|---|
--aggressive |
cli_decoding.aggressive |
Forces PyFunceble to try to decodes as much as possible - even if doesn't necessarly makes sense. |
--wildcard |
cli_decoding.wildcard |
Forces PyFunceble to remove the wildcards parts of subjects. Example: *.example.org -> example.org . |
You can also force PyFunceble to filter or generate new subjects to test. This can be controlled through the following argument:
Argument | Configuration Parameter | Description |
---|---|---|
--complement |
cli_testing.complements |
Forces PyFunceble to generate complements. A complement of a domain is for example www.example.org when example.org is supplied - and vice-versa. |
--filter |
cli_testing.file_filter |
Forces PyFunceble to only tests the matching subjects. Example --filter "example.org$" will force PyFunceble to only test subjects that ends with example.org . |
Output Format
The PyFunceble CLI has 3 ways of displaying information to you.
The (default) output:
pyfunceble -d github.com
[...]
Subject Status Source
---------------------------------------------------------------------------------------------------- ----------- ----------
github.com ACTIVE WHOIS
The complete output, that you can get through the -a
or --all
arguments:
pyfunceble -a -d github.com
[...]
Subject Status Source Expiration Date Registrar HTTP Code Checker
---------------------------------------------------------------------------------------------------- ----------- ---------- ----------------- ------------------------------ ---------- -------------
github.com ACTIVE WHOIS 09-oct-2024 MarkMonitor Inc. 301 AVAILABILITY
The simple output, that you can get through the -s
or --simple
arguments: