Ninja Pumpkin Mutants


    1.0.6 • Public • Published



    A 100 line shadowsocks like firewall tunneling proxy written in nodejs with educational purpose.


    # install 
    npm install -g viti
    # start remote server 
    viti --remote --password 'sample password'
    # start local server and connect with remote 
    viti --local --host '' --password 'sample password'


    1. local server will be listening on; Then, you need to set up socks proxy for your computer
    2. remote server will be listening on port 1082; make sure this port is opened.
    3. password of remote and local server should be the same

    How simple-shadow works

    The principle is simple:

    Your local machine is not able to visit because a firewall blacklist the google's IP or reading your request and preventing you from visit google.

    However, you have another machine which you can access and that machine can access

    It is easy to think of that you can ask that machine to visit sites on behalf of you and return result back to you. But the firewall may reading your request to that machine. So, you will need to encrypt your data when you are requesting that machine.

    Detailed procedure is

    1. browser want to visit; the request is sent in SOCKS5 protocal to local tcp proxy
    2. local tcp proxy encrypt the data and send to remote tcp proxy(pass the wall)
    3. remote tcp proxy decrypt the data and send to SOCKS5 server
    4. SOCKS5 server do the request to and send the response back to remote tcp proxy
    5. remote tcp proxy encrypt the data and send to local tcp proxy(pass the wall)
    6. local tcp proxy decrypt the data and send back to brower, now you can access!

    Concepts to grasp

    • SOCKS5: An Internet protocol that exchanges network packets between a client and server through a proxy server. We use SOCKS5 as a request client on remote server.
    • AES (Advanced Encryption Standard): AES is an symmetric-key algorithm (the same key is used for both encrypting and decrypting the data). We use AES to encrypt data in order to pass through the wall.

    Good reads about GFW




    npm i viti

    DownloadsWeekly Downloads






    Last publish


    • timqian