Giter Site home page Giter Site logo

viti's Introduction

simple-shadow

中文介绍

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

Usage

# install
npm install -g viti

# start remote server
viti --remote --password 'sample password'

# start local server and connect with remote
viti --local --host '127.0.0.1' --password 'sample password'

Note

  1. local server will be listening on 127.0.0.1:1081; 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 google.com 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 google.com.

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 google.com; 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 google.com 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 google.com!

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

viti's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.