# [Darknet Lantern Project v1.0.0](http://lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/)
![logo](./project.png)

To explain the full context on why this project is relevant in the darknet ecosystem compared to the clearnet, check out [this blogpost](http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/opsec/darknetexploration/index.html)

For a full step-by-step tutorial on how to setup your own Darknet lantern, check out [this tutorial](http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/opsec/darknetlantern/index.html)

Feel free to join our [Darknet Exploration SimpleX chatroom](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FBD4qkVq8lJUgjHt0kUaxeQBYsKaxDejeecxm6-2vOwI%3D%40b6geeakpwskovltbesvy3b6ah3ewxfmnhnshojndmpp7wcv2df7bnead.onion%2F4woLIDlpkvXRvZmaAiWA802OwiyxekdJ%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAzIAoE-OWDqFJXMqgunIWHPpE_u7e52Wtu8TioPc1QwI%253D&data=%7B%22groupLinkId%22%3A%22Srr1_MNob7WfPTQIY-ug5Q%3D%3D%22%7D) to talk about the project, and to let me know if you are running a Darknet Lantern instance and want to join the Darknet Webring.

# What is the Darknet Lantern Project ?

Darknet Lantern is a minimalistic Peer to Peer Decentralised Search Engine for the Darknet, that got officially released on the 1st of Febuary 2025.
![logo](./lantern-interface.png)

## Why is the Darknet Lantern relevant ?

The Darknet is fundamentally different compared to the Clearnet. Where the Clearnet is like an open city where every destination is visible from the sky, where every website is indexable and searchable using popular search engines, the Darknet is like an immense, dense dark forest where you can't see any destination from the sky. 

To explore the Darknet, we need peers (like you and me) to maintain their own lists of onion links for each other, to be able to know where to go, as search engines can't automatically crawl onion websites like they do on the clearnet. The Darknet Lantern Project is a serious attempt at solving the fundamental lack of search engines on the Darknet by organising the manual peer-based work of discovering hidden services in the most efficient way, to make sure Hidden Websites can get visibility while maintaining their anonymity.

## Why is the Darknet Lantern Webring  relevant ?

The Darknet Lantern Project includes a Webring, as otherwise the Darknet Lanterns would remain scattered and remain hidden from each other, to participate in the webring is to exponentially increase the visibility of the Onion websites you listed, the more webring participants there are.

The more people join the Darknet Lantern Webring, the more visibility Darknet websites will be able to have over time, just like how it would be on the clearnet, while keeping the decentralisation and censorship-resistance intact.
All you need is to run your own Darknet Lantern instance, and to join the Webring as a new participant.

## What is the default trust model ?

When spinning up your own Darknet Lantern instance, you are automatically creating your instance folder in www/participants/yourinstancehostname.onion/ and in there you'll find a copy of the blank verified.csv, unverified.csv, and webring-participants.csv files, along with the default banner.png file.

By default, as they are in the templates/ directory, the verified.csv and unverified.csv files are empty as you shouldn't trust random links that other people are trusting, you should verify them yourself one by one, to make sure that they aren't malicious.

That is why by default, when you first setup your own lantern instance, you are not listing anything, nor trusting any links, nor trusting any webring participants. This is a safety measure by default to avoid vectors of abuse.

If you choose to do so, you can trust another webring participant, which means that in turn you'll automatically trust the links that they are trusting. But be warned that this is potentially dangerous in case if it turns out that they start to trust malicious links later down the line.

## What is the lifecycle of a Lantern instance ? 

At first, you have an empty Lantern, no links listed, no links trusted, no webring participants trusted either.

If you want to go your own way to explore the darknet yourself, you can start to list links yourself, into the unverified.csv file, and later on once you browse them enough to verify their authenticity, you may choose to trust them, to move them from unverified.csv to verified.csv

If you want to avoid doing the same work that other webring participants may have already done, you may choose to synchronize with their lists of links, and to add the links that you didn't list yet into your own unverified.csv file. That way you'll be able to start exploring the Darknet starting from where others left off.

After a while of adding new links and verifying them, you may choose to trust another webring participant's list of links, to automatically add their verified links into your own verified.csv file. However as stated above be warned that this is risky due to the fact that you may inadvertently trust malicious links because of that other peer.

## What if there are malicious Lantern Instances ?

As stated above, it is possible that there will be malicious Lantern instances, meaning that you may have malicious peers that start to list some extremely illegal websites into their verified.csv file. This is why by default you are not trusting any Lantern webring participant, nor any links.

This is also the reason why there is a blacklist.csv file. That way, if there are any malicious keywords or links to be found, they will be immediately deleted. I for instance, refuse to list any porn sites or list any instance that lists porn websites, and i encourage you to do the same (hence the blacklist.csv file containing those words by default), as those can link to some extremely illegal content that you definitely don't want to get associated with. 

Using the blacklist.csv file you can list blacklisted words, links and even links to blacklisted webring participants, that will automatically be removed if encountered by the python scripts.

# Changelog + Roadmap
## Previous Versions:
```
V0.3:
- py : option 6) Trust/Untrust/Blacklist a webring participant
- php : make a search engine prompt that only accepts [a-zA-Z.://], it must refuse every other character 
- py : fix uptimecheck.py to match the new csv format 
- php : if valid make it filter your own verified.csv and unverified.csv files

V0.6:
- py : option 9)  cleanup all duplicates in your own unverified.csv and verified.csv
- py : option 10) perform sanity checks on all csv files (to mark them as sensitive or remove the ones that are blacklisted)
- py : option 7) Add/Remove words in the sensitive list			
- py : option 8) Add/Remove words in the blacklist				

V0.8:
- manual work: fit all the existing links into the current format one by one
- php/css: make the search page preety
- doc: redo the documentation for the project

v0.9
- harden the python code to make sure that the user filters out malicious inputs from other webring participants
- harden the PHP code to prevent any malicious php code from being ran from csv files even if that shouldnt be possible
```

## Current Version:
```
V1.0.0: (01/02/2025)
- doc: finish the blogposts on why it is important, and how to setup your own instance
- release it officially to try and onboard the first webring participants
```

## Future Versions:
```
V1.0.1+:
- py: refactor/simplify the lantern.py script wherever possible (assigned to Sovereignty)
- php: find a way to display the description for each link
- py: merge the option 2 and 3 together, and repurpose option 3 to become "edit links attributes" 
- py: add script to automatically sync new links 

V1.1.0+:
- csv+php: figure out how to display other webrings ? like the lainchan webring
- csv+php: figure out how to expand the software to include simplex chat links (add another column ?)
- docker: figure out how to dockerize the darknet lantern project while maintaining the onion-only requirement

V1.2.0+:
- add i2p support (hopefully by then the blogposts on i2p will be written)
``` 



## How can I setup my own Darknet Lantern ?
For the full step-by-step tutorial on how to setup your own Darknet lantern (with the screenshots), check out [this tutorial](http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/opsec/darknetlantern/index.html)


We'll first cover how you can run your own Darknet Lantern instance, In short you'll need the latest debian (which is debian 12 currently), Tor, php8.2-fpm, python and a few python libraries that you'll install via the apt package manager.


0) git clone the repository in your directory of choice:
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install tor git torsocks -y

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ torsocks git clone http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/darknet-lantern /srv/darknet-lantern

```
1) Install nginx and php8.2-fpm
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install php8.2-fpm nginx -y
```

2) use the nginx.conf and drop it in /etc/nginx/sites-available/
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ ls
nginx.conf  README.md  scripts  todo.txt  torrc  www

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cp nginx.conf /etc/nginx/sites-available/lantern.conf

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ vim /etc/nginx/sites-available/lantern.conf
```
3) use [mkp244o](http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/opsec/torwebsite/index.html) if you want to have a custom vanity v3 hidden service domain name

4) use the torrc config to have a local socks5 port (as it will be used by the python script to check the uptime of the listed onion links)

```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ vim /etc/tor/torrc

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cat /etc/tor/torrc

HiddenServiceDir /var/lib/tor/onions/nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/
HiddenServicePort 80 127.0.0.1:4443
SocksPort 127.0.0.1:9050

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ systemctl restart tor@default

```
5) enable the nginx config and validate that it can be accessed on Tor

```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ ln -s /etc/nginx/sites-available/lantern.conf /etc/nginx/sites-enabled/

[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ nginx -s reload

6) install the python script dependencies:
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install python3-pandas python3-requests python3-socks

```

Now that's done, you can run scripts/lantern.py for the first time to confirm your own instance name:
```sh
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
[+] Instance Path doesn't exist yet
What is your Instance domain ? (ex: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion): lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion

[+] Instance Name:  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True

lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
Is this your this your instance domain ? (y/n)y
OK writing the instance url to ~/.darknet_participants_url
[+] file written, let's read it
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
[+] Initial Setup Completed!
[+] file exists, your Webring URL is lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion

```

In another terminal you can validate that ~/darknet_participant_url has been created properly:
```sh
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ cat ~/.darknet_participant_url
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion#

```
This is the file that lantern.py will check to get your instance name the next times you run the script.
Next you can run scripts/lantern.py again to start adding websites:
```sh
[ Wonderland ] [ /dev/pts/20 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
[+] Instance Name: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True
[+] file exists, your Webring URL is lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion





[+] Welcome to your own Darknet Lantern Instance, where you can explore the Darknet and help others do the same.

Managing Websites:
 1) Add a new Website entry (into unverified.csv)
 2) Trust a Website entry (move an entry from unverified to verified.csv)
 3) Untrust a Website entry (move an entry from unverified to verified.csv)

Managing Webring Participants:
 4) Synchronize new links from existing webring participants, into your unverified.csv file
 5) Add a new webring participant (and download their files into their directory (without trusting them yet!))
 6) Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)

Managing Wordlists:
 7) Add/Remove Words/URLs in the sensitive list (ex: drug)
 8) Add/Remove Words/URLs or links in the blacklist (ex: porn)

Maintenance:
 9) Remove the duplicate URLs for your own instance
 10) Perform sanity checks on all csv files for all instances (to mark them as sensitive / or remove the ones that are blacklisted)

 0) Exit

Select Option? (0-11): 

```
Here we select option 1 to add some websites:

```sh
Select Option? (0-11): 1
1

[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Qubes OS Website
What is the website Category ? Tools
What is the website URL ? http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/
Description for the website ? (Optional) OS based on Xen that focuses on compartmentalization and virtualization.
Is the website sensitive ? (ex: related to drugs) (y/n) n
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Qubes OS Website', 'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/', '❌', 'OS based on Xen that focuses on compartmentalization and virtualization.', '', '']
[+] New row added! now writing the csv file:

[+] Want to add another website ? (y/n) y

[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Whonix Website
What is the website Category ? Tools
What is the website URL ? http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/
Description for the website ? (Optional) VM for general anonymous use
Is the website sensitive ? (ex: related to drugs) (y/n) n
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Whonix Website', 'http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/', '❌', 'VM for general anonymous use', '', '']
[+] New row added! now writing the csv file:

[+] Want to add another website ? (y/n) y

[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Feather Wallet
What is the website Category ? Tools
What is the website URL ? http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4rszylfzjdg6pbm3id.onion/
Description for the website ? (Optional) Lightweight Monero Wallet
Is the website sensitive ? (ex: related to drugs) (y/n) n
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Tools', 'Feather Wallet', 'http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4rszylfzjdg6pbm3id.onion/', '❌', 'Lightweight Monero Wallet', '', '']
[+] New row added! now writing the csv file:

[+] Want to add another website ? (y/n) y

[+] Add a new Website entry (into unverified.csv)
What is the Website name ? Dark Forest
What is the website Category ? Forums
What is the website URL ? http://dkforestseeaaq2dqz2uflmlsybvnq2irzn4ygyvu53oazyorednviid.onion/
Description for the website ? (Optional)
Is the website sensitive ? (ex: related to drugs) (y/n) y
[+] NEWROW= ['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion', 'Forums', 'Dark Forest', 'http://dkforestseeaaq2dqz2uflmlsybvnq2irzn4ygyvu53oazyorednviid.onion/', '✔️', '', '', '']
[+] New row added! now writing the csv file:

[+] Want to add another website ? (y/n) n

```
Now that you added some websites to your unverified.csv file, you can view the csv file in www/participants/YOURINSTANCENAME.onion/unverified.csv:
```sh
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ cat www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/unverified.csv | grep Tools

Instance,Category,Name,URL,Sensitive,Description,Status,Score

lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Tools,Feather Wallet,http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4rszylfzjdg6pbm3id.onion/,❌,Lightweight Monero Wallet,,
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Tools,Whonix Website,http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/,❌,VM for general anonymous use,,
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,Tools,Qubes OS Website,http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/,❌,OS based on Xen that focuses on compartmentalization and virtualization.,,


```

7) As you can see, the websites' uptime status and score is missing (in the last 2 columns in the csv file), therefore using scripts/uptimechecker.py we'll automatically fill those in:
```sh
[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ python3 scripts/uptimechecker.py
[+] ONION UPTIME CHECKER
[+] Instance Name: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True
[+] Reading the CSV File: /srv/darknet-lantern/www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv
                        Name                                                URL
0        Hackliberty Writers  http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34...
1          The Nihilism Blog  http://blog.nowherejezfoltodf4jiyl6r56jnzintap...
2               SimpleX Chat                              https://simplex.chat/
3          Hackliberty Forum  http://yw7nc56v4nsudvwewhmhhwltxpncedfuc43qbub...
4                      Dread  http://g66ol3eb5ujdckzqqfmjsbpdjufmjd5nsgdipvx...
5                      Pitch  http://pitchzzzoot5i4cpsblu2d5poifsyixo5r4litx...
6   Hackliberty main website  http://kj3wvs3wyfhm3uhhuqxlrhhcp6dneuau4mmvptl...
7            Hackliberty OTS                       https://ots.hackliberty.org/
8                  DNM Bible  http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq...
9            Psychonaut Wiki  http://vvedndyt433kopnhv6vejxnut54y5752vpxshja...
10                  Tor Taxi  http://tortaxi2dev6xjwbaydqzla77rrnth7yn2oqzjf...
11            LibreTranslate  http://translate.nowherejezfoltodf4jiyl6r56jnz...
12                Safetwitch  http://safetwitch.nowherejezfoltodf4jiyl6r56jn...
13                Privatebin  http://bin.nowherejezfoltodf4jiyl6r56jnzintap5...
14                    Redlib  http://redlib.nowherejezfoltodf4jiyl6r56jnzint...
15                Lain Radio  http://radio.nowherejezfoltodf4jiyl6r56jnzinta...
16                    Gothub  http://gothub.nowherejezfoltodf4jiyl6r56jnzint...
17            Forgejo Datura  http://git.nowherejezfoltodf4jiyl6r56jnzintap5...
18                 XMRBazaar                             https://xmrbazaar.com/
19                Crypton sh  http://cryptonx6nsmspsnpicuihgmbbz3qvro4na35od...
20                   SMSPool                               https://smspool.net/
21               Silent Link  http://silentlnit5ryavvfz5vw7s4qg62jujd666lnc4...
22                       JMP                                  https://jmp.chat/
23                MullvadVPN  http://o54hon2e2vj6c7m3aqqu6uyece65by3vgoxxhlq...
24                  IncogNET  http://incoghostm2dytlqdiaj3lmtn7x2l5gb76jhabb...
25                   Cockbox  http://dwtqmjzvn2c6z2x462mmbd34ugjjrodowtul4jf...
26                   NiceVPS  https://nicevpsvzo5o6mtvvdiurhkemnv7335f74tjk4...
27                 Kyun Host  http://kyunnnckhnkl6oevonhwbltenwbgxwxf54mcpvm...
28              Servers Guru  http://srvguru7bjzzjba7xy2hnx2ju4k77qy4eum2h3t...
29                  Nowhere2  http://lantern.nowhevi57f4lxxd6db43miewcsgtova...
30                   Nowhere  http://lantern.nowherejezfoltodf4jiyl6r56jnzint...
[+] Checking if each .onion link is reachable:
[+] Editing the uptime score
0
[+] http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read 200
http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read ✔️
[+] Editing the uptime score
1
[+] http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/ 200
http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/ ✔️
[+] Editing the uptime score
2

[...]

```
It may take a few minutes depending on the size of your list of links to check all of their uptimes, as the script has to connect through Tor for every website to tell if they are reachable or not.

8) make sure the cronjob for scripts/uptimechecker.py is running at least once every 3 hours so that the csv files are automatically kept up to date.
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ crontab -e

*/3 0 * * * python3 /srv/darknet-lantern/scripts/uptimechecker.py 
```
## When should I mark websites as sensitive ?

In order to avoid putting all eggs in one basket, i recommend marking websites that are related to Drugs (as this is the most popular sensitive darknet topic) as sensitive whenever you add them into your unverified.csv file, that way you can give your audience a safe browsing searching experience, and an opt-in sensitive browsing search experience (with ample disclaimers/warnings) if they choose to do so.

There is also a sensitive.csv file in your instance directory to list those keywords, so that they get automatically marked as sensitive by the python scripts.

## How can I verify links ?

To Verify links (meaning that you are moving links from your unverified.csv file into your verified.csv file), use scripts/lantern.py to do the following:
```sh

[ Wonderland ] [ /dev/pts/33 ] [/srv/darknet-lantern]
→ python3 scripts/lantern.py
[+] Instance Name: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion True
[+] file exists, your Webring URL is lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion





[+] Welcome to your own Darknet Lantern Instance, where you can explore the Darknet and help others do the same.

Managing Websites:
 1) Add a new Website entry (into unverified.csv)
 2) Trust a Website entry (move an entry from unverified to verified.csv)
 3) Untrust a Website entry (move an entry from unverified to verified.csv)

Managing Webring Participants:
 4) Synchronize new links from existing webring participants, into your unverified.csv file
 5) Add a new webring participant (and download their files into their directory (without trusting them yet!))
 6) Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)

Managing Wordlists:
 7) Add/Remove Words/URLs in the sensitive list (ex: drug)
 8) Add/Remove Words/URLs or links in the blacklist (ex: porn)

Maintenance:
 9) Remove the duplicate URLs for your own instance
 10) Perform sanity checks on all csv files for all instances (to mark them as sensitive / or remove the ones that are blacklisted)

 0) Exit

Select Option? (0-11): 2
2
[+] Trust a Website entry (move an entry from unverified to verified.csv)
              Name                                                URL
0     Houdini Swap                           https://houdiniswap.com/
1       xchange me  http://xmxmrjoqo63c5notr2ds2t3pdpsg4ysqqe6e6uu...
2             Exch  http://hszyoqwrcp7cxlxnqmovp6vjvmnwj33g4wviuxq...
3    Magestic Bank  http://majestictfvnfjgo5hqvmuzynak4kjl5tjs3j5z...
4         Infinity                   https://exchanger.infinity.taxi/
..             ...                                                ...
78          AirVPN  https://airvpn3epnw2fnsbx5x2ppzjs6vxtdarldas7w...
79  Orange Website                         https://orangewebsite.com/
80             UDN  http://ax3zoslh2ujdq3joyibdn657mhjfxjm637vxiix...
81      My Nym Box                               https://mynymbox.io/
82      SporeStack  http://spore64i5sofqlfz5gq2ju4msgzojjwifls7rok...

[83 rows x 2 columns]
What is the Website name you want to trust ? (ex: Nowhere)Qubes
                Name                                                URL
72  Qubes OS Website  http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4...
What is the index of the entry that you want to move to verified.csv ? (ex: 3) 72
['lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion'
 'Tools' 'Qubes OS Website'
 'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/'
 '❌'
 'OS based on Xen that focuses on compartmentalization and virtualization.'
 '✔️' 100.0]
[+] New row added to verified.csv! now writing to the csv
[+] Link is now moved to verified.csv!

[+] Want to trust another website ? (y/n) n

```

## How can I Synchronize new links from the existing webring participants ?
Option 4 in scripts/lantern.py will synchronize the links you didn't list yet in your own unverified.csv or verified.csv files from other peers whose directory exist in www/participants/

```sh
Select Option? (0-11): 4
4
4) Synchronize new links from existing webring participants, into your unverified.csv file
http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/
[+] Downloading the files of  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion :
[+] Webring Participant is reachable, updating their csv files:
/srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/verified.csv
['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Blogs', 'Hackliberty Writers', 'http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read', '❌', nan, '✔️', 100.0]
[-] Skipping row as it is already added in  verified.csv ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Blogs', 'Hackliberty Writers', 'http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read', '❌', nan, '✔️', 100.0]
[-] Rows to delete:  []
['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Blogs', 'The Nihilism Blog', 'http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/', '❌', nan, '❌', 99.0]
[-] Skipping row as it is already added in  verified.csv ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Blogs', 'The Nihilism Blog', 'http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/', '❌', nan, '❌', 99.0]
[-] Rows to delete:  []
['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Chat', 'SimpleX Chat', 'https://simplex.chat/', '❌', nan, '✔️', 100.0]
[-] Skipping row as it is already added in  verified.csv ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Chat', 'SimpleX Chat', 'https://simplex.chat/', '❌', nan, '✔️', 100.0]
[-] Rows to delete:  []

[...]

['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'VPS', 'UDN', 'http://ax3zoslh2ujdq3joyibdn657mhjfxjm637vxiix7iilxnfbsabces4qd.onion/', '❌', nan, '✔️', 100.0]
[-] Skipping row as it is already added in  unverified.csv ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'VPS', 'UDN', 'http://ax3zoslh2ujdq3joyibdn657mhjfxjm637vxiix7iilxnfbsabces4qd.onion/', '❌', nan, '✔️', 100.0]
[-] Rows to delete:  []
['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'VPS', 'SporeStack', 'http://spore64i5sofqlfz5gq2ju4msgzojjwifls7rok2cti624zyq3fcelad.onion/', '❌', nan, '✔️', 100.0]
[-] Skipping row as it is already added in  unverified.csv ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'VPS', 'SporeStack', 'http://spore64i5sofqlfz5gq2ju4msgzojjwifls7rok2cti624zyq3fcelad.onion/', '❌', nan, '✔️', 100.0]
[-] Rows to delete:  []

```

## How can I add a new webring participant ?

Find someone else that runs a lantern instance, and list their own instance from your own as follows:
```sh

Select Option? (0-11): 5
5
[+] Add a new webring participant (and download their files into their directory (without trusting them yet!))
What is the onion domain of the new webring participant? (ex: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion)  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion
http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/
[+] Checking if all of the required csv files exists for new webring participant  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion :
[+] Webring Participant is valid, adding it.
What is the Webring instance name ? Nowhere Two
Description for the webring participant ? (Optional)
[+] New row added! now writing the csv file: /srv/darknet-lantern/www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/webring-participants.csv
[+] DOWNLOADING  http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/verified.csv
[+] SAVING IT INTO  /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/verified.csv
[+] file written, let's read it
Instance,Category,Name,URL,Sensitive,Description,Status,Score
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,Blogs,Hackliberty Writers,http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read,❌,,✔️,100.0
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,Blogs,The Nihilism Blog,http://blog.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/,❌,,❌,99.0

[...]

lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,Webring,Nowhere2,http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/,,,✔️,100.0
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,Webring,Nowhere,http://lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/,,,❌,99.0

[+] DOWNLOADING  http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/unverified.csv
[+] SAVING IT INTO  /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/unverified.csv
[+] file written, let's read it
Instance,Category,Name,URL,Sensitive,Description,Status,Score
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,Exchanges,Houdini Swap,https://houdiniswap.com/,❌,,✔️,100.0
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,Exchanges,Crypton Exchange,https://crp.is/,❌,,✔️,100.0

[...]

lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,VPS,UDN,http://ax3zoslh2ujdq3joyibdn657mhjfxjm637vxiix7iilxnfbsabces4qd.onion/,❌,,✔️,100.0
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,VPS,SporeStack,http://spore64i5sofqlfz5gq2ju4msgzojjwifls7rok2cti624zyq3fcelad.onion/,❌,,✔️,100.0

[+] DOWNLOADING  http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/blacklist.csv
[+] SAVING IT INTO  /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/blacklist.csv
[+] file written, let's read it
blacklisted-words
pr0n
pron
teen
porn

[+] DOWNLOADING  http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/sensitive.csv
[+] SAVING IT INTO  /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/sensitive.csv
[+] file written, let's read it
sensitive-words
Market
market
drug

[+] DOWNLOADING  http://lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/webring-participants.csv
[+] SAVING IT INTO  /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/webring-participants.csv
[+] file written, let's read it
Name,URL,Description,Trusted,Status,Score
,lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion,,,✔️,100.0
,lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,,✔️,✔️,100.0


[+] Banner is valid
Marking row 18 as sensitive, as it matches with a sensitive word
[-] Rows to delete:  []
Marking row 59 as sensitive, as it matches with a sensitive word
[-] Rows to delete:  []


```

##  How can I officially get listed as a webring participant on the git repository ?

In short the requirement is that you should have the core functionnality of listing the links you didn't verify yet, listing the links you verified, including some onion links listed that i didn't list yet, and that are not porn-related. If you have a working lantern instance with some new onion links, ping me directly on [SimpleX](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FBD4qkVq8lJUgjHt0kUaxeQBYsKaxDejeecxm6-2vOwI%3D%40b6geeakpwskovltbesvy3b6ah3ewxfmnhnshojndmpp7wcv2df7bnead.onion%2F4NTxj7pyXgVGYfHs8qDdKfW-STOA8AP1%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEA5FMqfn6nXs8ETbpz2iu55jr3BKHlfuesWVnko-A1Ewk%253D) to get your lantern instance listed on my own 2 instances, and if after checking it is OK to get added (meaning it is at least a little noob friendly and you don't have any porn links listed there) i'll push a git commit with the updated files. 

<u>Sidenote:</u> you are free to fork the project, and change how the front-end looks to customize it, but the CSV format (especially the columns order and their titles, and the values format) and the paths need to remain the same (ex: http://URL.onion/participants/URL.onion/verified.csv)

If you want to run your own webring yourself, simply fork the git repository on your own forgejo instance, and federate with other darknet lantern instances with your own different set of rules.

##  How can I officially get listed as a trusted webring participant on the git repository ?
I officially won't officially trust any webring participant. I prefer to manually verify each new link i synchronize my instance with, if i find any to be interesting. Instead i will leave "trusting other webring instances" up to whoever wants to run that risk themselves. I prefer to only manually approve new webring participants on my own, because if i try to let it loose and try to automatically trust random webring participants, many blacklisted links may end up getting listed inadvertently.

## How can I trust / untrust / blacklist a webring participant ?

If you know a webring participant as being trustworth, you can use scripts/lantern.py to do the following to trust a their verified links (as they will automatically be added to your verified.csv file):

```sh
Select Option? (0-11): 6
6
[+] Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)
                                                 URL Trusted
0  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f...     NaN
1  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...      ✔️
What is the index of the webring participant that you want to edit ? (ex: 3) 0
Do you want to 1) Trust, 2) UnTrust, or 3) Blacklist the webring participant ?1
You're about to trust another peer, this means that you're going to automatically trust all of the links they have in their verified.csv file! If this is a malicious peer, you're about to potentially going to automatically trust malicious links, it is potentially risky! Do you want to continue ? (y/n)y
[+] Trusting webring participant lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion

```

If you no longer trust a webring participant, use scripts/lantern.py to do the following to untrust a webring participant:
```sh
Select Option? (0-11): 6
6
[+] Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)
                                                 URL Trusted
0  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f...      ✔️
1  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...      ✔️
What is the index of the webring participant that you want to edit ? (ex: 3) 0
Do you want to 1) Trust, 2) UnTrust, or 3) Blacklist the webring participant ?2
[+] UnTrusting webring participant lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion


```
If you found a malicious darknet latern instance, use scripts/lantern.py to do the following to blacklist a webring participant (and subsequently remove all of their links, add them to the blacklist.csv file, remove them from your own webring-participants.csv file and delete their directory in www/participants/blacklistedinstance):

```sh
Select Option? (0-11): 6
6
[+] Trust/UnTrust/Blacklist a webring participant (Potentially dangerous)
                                                 URL Trusted
0  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f...     NaN
1  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...      ✔️
What is the index of the webring participant that you want to edit ? (ex: 3) 0
Do you want to 1) Trust, 2) UnTrust, or 3) Blacklist the webring participant ?3
[+] Blacklisting webring participant lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion
[+] NEWROW= ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion']
[+] New row added! now writing the csv file:
Marking row 0 for deletion, as it matches with a blacklisted word
Marking row 1 for deletion, as it matches with a blacklisted word

[...]

Marking row 30 for deletion, as it matches with a blacklisted word
Marking row 31 for deletion, as it matches with a blacklisted word
[+] REMOVING ROW : 0 ['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Blogs', 'Hackliberty Writers', 'http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read', '❌', nan, '✔️', 100.0]
                                             Instance           Category                      Name                                                URL Sensitive                                        Description Status  Score
1   lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f...              Blogs         The Nihilism Blog  http://blog.nowherejezfoltodf4jiyl6r56jnzintap...         ❌                                                NaN     ✔️  100.0
2   lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f...               Chat              SimpleX Chat                              https://simplex.chat/         ❌                                                NaN     ✔️  100.

[...]

27  lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f...                VPS                 Kyun Host  http://kyunnnckhnkl6oevonhwbltenwbgxwxf54mcpvm...         ❌                                                NaN     ✔️  100.0

[...]

                                      Instance Category            Name                                                URL Sensitive                   Description Status  Score
20  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...   Forums     Dark Forest  http://dkforestseeaaq2dqz2uflmlsybvnq2irzn4ygy...        ✔️                           NaN     ✔️  100.0
70  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...    Tools  Feather Wallet  http://featherdvtpi7ckdbkb2yxjfwx3oyvr3xjz3oo4...         ❌     Lightweight Monero Wallet     ✔️  100.0
71  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...    Tools  Whonix Website  http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rb...         ❌  VM for general anonymous use     ✔️  100.0
Marking row 0 for deletion, as it matches with a blacklisted word
[+] REMOVING ROW : 0 ['Nowhere Two', 'lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', nan, nan, nan, nan]
  Name                                                URL  Description Trusted Status  Score
1  NaN  lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyj...          NaN      ✔️     ✔️  100.0
[+] removing the participant's directory at  /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion

```
as you can see it also did the following changes:
```sh

[ Wonderland ] [ /dev/pts/33 ] [darknet-lantern/www/participants]
→ ls
lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion

[ Wonderland ] [ /dev/pts/33 ] [darknet-lantern/www/participants]
→ cd lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion

[ Wonderland ] [ /dev/pts/33 ] [www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion]
→ ls
banner.png  blacklist.csv  sensitive.csv  unverified.csv  verified.csv  webring-participants.csv

[ Wonderland ] [ /dev/pts/33 ] [www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion]
→ cat webring-participants.csv
Name,URL,Description,Trusted,Status,Score
,lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion,,✔️,✔️,100.0

[ Wonderland ] [ /dev/pts/33 ] [www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion]
→ cat blacklist.csv
blacklisted-words
lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion
porn

```


## How can I edit the sensitive.csv and blacklist.csv wordlists ?

To edit the sensitive.csv if you want to add a word or a link to flag as sensitive, you can do the following by using scripts/lantern.py: 

```sh

Select Option? (0-11): 7
7
[+] Add/Remove Words/URLs in the sensitive list (ex: drug)
[+] do you want to 1) add  or 2) remove Words/URLs? (type exit to exit) 1
[+] which Sensitive word do you want to add? (write -1 to exit) Drugz
[+] checking if the Word/URL is valid:
False False True
[+] Word/URL is valid, adding the word into the sensitive wordlist
[+] NEWROW= ['Drugz']
[+] New row added! now writing the csv file:
[+] which Sensitive word do you want to add? (write -1 to exit) -1

[ Datura ] [ /dev/pts/18 ] [/srv/darknet-lantern]
→ cat www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/sensitive.csv
sensitive-words
Drugz
Market
market
drug


Select Option? (0-11): 7
7
[+] Add/Remove Words/URLs in the sensitive list (ex: drug)
[+] do you want to 1) add  or 2) remove Words/URLs? (type exit to exit) 2
  sensitive-words
0           Drugz
1          Market
2          market
3            drug
which word do you want to remove? (index 0 to (max index) (write -1 to exit) 0
[+] removing selected index:
  sensitive-words
1          Market
2          market
3            drug
which word do you want to remove? (index 0 to (max index) (write -1 to exit) -1

```
And to do the same but with the blacklist.csv file you can do the following:
```sh
Select Option? (0-11): 8
8
[+] Add/Remove words in the blacklist list (ex: porn)
[+] Do you want to 1) add  or 2) remove Words/URLs? (type exit to exit) 1
[+] Which Sensitive word do you want to add? (write -1 to exit) pr0N
[+] Checking if the Word/URL is valid:
False False True
[+] Word/URL is valid, adding the word into the blacklist
[+] NEWROW= ['pr0N']
[+] New row added! now writing the csv file:
[+] Which Sensitive word do you want to add? (write -1 to exit) -1


Select Option? (0-11): 8
8
[+] Add/Remove words in the blacklist list (ex: porn)
[+] Do you want to 1) add  or 2) remove Words/URLs? (type exit to exit) 2
  blacklisted-words
0              pr0N
1              pr0n
2              pron
3              teen
4              porn
which word do you want to remove? (index 0 to (max index) (write -1 to exit) 0
[+] removing selected index:
  blacklisted-words
1              pr0n
2              pron
3              teen
4              porn
which word do you want to remove? (index 0 to (max index) (write -1 to exit) -1

```
# How do i delete duplicates from my verified.csv and unverified.csv file ?
you may sometimes add the same link twice so to avoid manually having to find such link you can simply do the following using scripts/lantern.py:
```sh

Select Option? (0-11): 9
9
[+] 9) Cleaning up all duplicates in your own unverified + verified.csv (based on the url)
/srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/verified.csv
REMOVING DUPLICATES IN /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/verified.csv
                                                  URL
0   http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34...
1   http://blog.nowherejezfoltodf4jiyl6r56jnzintap...
2                               https://simplex.chat/
3   http://yw7nc56v4nsudvwewhmhhwltxpncedfuc43qbub...
4   http://pitchzzzoot5i4cpsblu2d5poifsyixo5r4litx...
5   http://kj3wvs3wyfhm3uhhuqxlrhhcp6dneuau4mmvptl...
6                        https://ots.hackliberty.org/
7   http://biblemeowimkh3utujmhm6oh2oeb3ubjw2lpgeq...
8   http://vvedndyt433kopnhv6vejxnut54y5752vpxshja...
9   http://tortaxi2dev6xjwbaydqzla77rrnth7yn2oqzjf...
10  http://translate.nowherejezfoltodf4jiyl6r56jnz...
11  http://safetwitch.nowherejezfoltodf4jiyl6r56jn...
12  http://bin.nowherejezfoltodf4jiyl6r56jnzintap5...
13  http://redlib.nowherejezfoltodf4jiyl6r56jnzint...
14  http://radio.nowherejezfoltodf4jiyl6r56jnzinta...
15  http://gothub.nowherejezfoltodf4jiyl6r56jnzint...
16  http://git.nowherejezfoltodf4jiyl6r56jnzintap5...
17  http://cryptonx6nsmspsnpicuihgmbbz3qvro4na35od...
18                               https://smspool.net/
19  http://silentlnit5ryavvfz5vw7s4qg62jujd666lnc4...
20                                  https://jmp.chat/
21  http://o54hon2e2vj6c7m3aqqu6uyece65by3vgoxxhlq...
22  http://dwtqmjzvn2c6z2x462mmbd34ugjjrodowtul4jf...
23  https://nicevpsvzo5o6mtvvdiurhkemnv7335f74tjk4...
24  http://kyunnnckhnkl6oevonhwbltenwbgxwxf54mcpvm...
25  http://srvguru7bjzzjba7xy2hnx2ju4k77qy4eum2h3t...
26  http://lantern.nowhevi57f4lxxd6db43miewcsgtova...
27  http://lantern.nowherejezfoltodf4jiyl6r56jnzint...
/srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/unverified.csv
REMOVING DUPLICATES IN /srv/darknet-lantern/www/participants/lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion/unverified.csv
                                                  URL
0                            https://houdiniswap.com/
1                                     https://crp.is/
2                                https://swapzone.io/
3                              https://tradeogre.com/
4   http://wizardswgtu2ovor7r2esg3cxdpt7tv4nrugi32...
..                                                ...
74                             https://safing.io/spn/
75                               https://mynymbox.io/
76                         https://orangewebsite.com/
77  http://ax3zoslh2ujdq3joyibdn657mhjfxjm637vxiix...
78  http://spore64i5sofqlfz5gq2ju4msgzojjwifls7rok...

[78 rows x 1 columns]

```


## How do i perform sanity checks on all links from all webring participants ? 
If you want to make sure every link of every webring participant is properly flagged as "sensitive" and/or blacklisted, you can do the following using scripts/lantern.py:

```sh
Select Option? (0-11): 10
10
[+] 10) perform sanity checks on all csv files (to mark them as sensitive / or remove the ones that are blacklisted)
Participant: lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion
/srv/darknet-lantern/www/participants/lantern.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/verified.csv
['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Blogs', 'Hackliberty Writers', 'http://lvgjoige2hl5qm5xcxhxuulyhdnq2wk3277eu34zpukxvacmvwva6vid.onion/read', '❌', nan, '✔️', 100.0]

[...]

['lantern.nowhevi57f4lxxd6db43miewcsgtovakbh6v5f52ci7csc2yjzy5rnid.onion', 'Forums', 'Dread', 'http://g66ol3eb5ujdckzqqfmjsbpdjufmjd5nsgdipvxmsh7rckzlhywlzlqd.onion/', '✔️', 'Dread, probably the biggest!ù*$&=)"à&è'& darknet forum out there, definitely worth checking out, the main topic there is Drugs', '❌', 59.0]
Marking row 4 for deletion, as it has invalid inputs

```
Here for example it just found an entry with invalid inputs, hence it has been marked for deletion


# LICENSE

There are no rights reserved, the entire project is public domain (Creative Commons 0 license)

# LEGAL DISCLAIMER
```
Across the entirety of all Darknet Lantern instances and all of the lists of links listed therein, the sole purpose of providing links to various darknet websites is strictly for informative and educative purposes. The administrator(s) of this darknet lantern instance decline any and all responsibility regarding any physical, digital and psychological damage caused by any of the listed websites, as the responsibility of such acts remain with the perpetrating third-party. By using this service, you permanently, irrevocably, and world-widely agree that the administrators of any darknet lantern instances aren't to be held responsible in any way for anything that another website ever did or will ever do, even if the link to that third-party website has been, is, or will ever be listed on any darknet lantern instance.

```

