This is a directory application intended to collect a list of federated instances of a PrivateBin, written in Rust 🦀.
Instances will be removed, if they are no longer reachable from this service for more then 24 hours, checked every 15 minutes. If you run a PrivateBin instance and would like not to have it published on this site, you can disable it in one of multiple ways.
By default the robots.txt
file of a PrivateBin instance disallows all search engine spiders. You can add an explicit rule to tell this service not to list your site:
User-agent: PrivateBinDirectoryBot Disallow: /
If you don't want to rely on this service following your sites robots.txt
, you can configure your webserver to block any access that matches this services user agent, which starts with the string PrivateBinDirectoryBot
. Here below are examples of configuration snippets to do just that:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} PrivateBinDirectoryBot [NC] RewriteRule . - [R=403,L]
@privatebinbot header User-Agent PrivateBinDirectoryBot* respond @privatebinbot 403
if ($http_user_agent ~ PrivateBinDirectoryBot ) { return 403; }
The complete user agent string currently looks like this:
PrivateBinDirectoryBot/0.13.0 (+https://privatebin.info/directory/about)
You can validate your webserver configuration using the following curl
command, expecting to get an HTTP 403 status code, if you block the bot:
$ curl --head --header "User-Agent: PrivateBinDirectoryBot/0.13.0 (+https://privatebin.info/directory/about)" https://paste.example.com HTTP/2 403 [...]
The columns of the lists are based on the following checks:
Location
header, that points to a matching HTTPS URL or there is no HTTP access offered on port 80.Content-Security-Policy
(CSP) header. This policy disables browser functions that PrivateBin doesn't use and can, among other things, mitigate execution of scripts that bypass other security mechanisms while viewing a paste that contains such. We currently recommend the following policy: default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads
fileupload
option enabled, you can upload attachments along side your texts.HEAD
request to reduce transmitted data. Only the last 100 results (25h) are kept and the percentage is calculated based on this. Basically this percentage is an indication if an instance experienced any prolonged downtime during the last day.The uptime checks via HTTP(S) HEAD request are performed every 15 minutes. Once a day all the other properties get re-evaluated and the list updated.
The instance list can be retrieved as a JSON encoded data structure by calling the /api
endpoint with the HTTP header Accept: application/json
set. The list order is randomized every time to spread the load to the instances.
$ curl --header "Accept: application/json" https://privatebin.info/directory/api
Additionally, the following optional GET parameters can be sent, to adjust the output:
Content-Security-Policy
(CSP) header (see above).For example, to retrieve the top 3 instances, randomized:
$ curl --header "Accept: application/json" https://privatebin.info/directory/api?top=3
A single random instance can be retrieved as a Location
HTTP header by calling the /forward-me
endpoint. Only instances that enforce HTTPS, use the currently recommend HTTP Content-Security-Policy
(CSP) header (see above), have a 100% uptime, a rating above or at A− and are of the latest version get returned.
$ curl -v https://privatebin.info/directory/forward-me
Due to using standard HTTP headers, this will also work when accessed in browsers, hence the limited options. When you click on the following link, it will open a new random instance every time: visit a random PrivateBin instance.
Additionally, the following optional GET parameters can be sent, to adjust the selection:
For example, to retrieve an instance with attachments enabled:
$ curl -v https://privatebin.info/directory/forward-me?attachments=true