Giter VIP home page Giter VIP logo

warp's Introduction

WARP

Simple http proxy made in python 3.4

This is proof-of-concept code.

The main purpose of WARP is bypassing http://warning.or.kr/, which is a Deep Packet Inspection that operated by Korea Government.

For more information, please see https://en.wikipedia.org/wiki/Internet_censorship_in_South_Korea

You should run this proxy in your local computer.

Dependency

  • python >= 3.4.0

How to install

You can install warp using pip:

$ pip install warp-proxy

Or if you're interested in bleeding edge of the master branch give it a try:

$ git clone git://github.com.devunt/warp.git
$ cd warp/
$ pip install -e .

How to use

  1. run warp command (or you might need to run warp.py instead if setuptools isn't installed in your system)

    $ warp
  2. set browser's proxy setting to

    http proxy

    host: 127.0.0.1 port: 8800

Command help

$ python warp.py --help

License

MIT License (included in warp.py)

면책조항

  1. WARP를 사용함으로써 생기는 모든 책임은 사용자에게 있습니다.
  2. WARP의 코드 기여자들은 사용에 관한 책임을 지지 않습니다.

Notice

  1. may not work in
    • some ISPs
    • some company firewalls
    • some school firewalls
    • some browers (will be fixed later)

Special thanks to

warp's People

Contributors

dahlia avatar devunt avatar dlunch avatar hdformat avatar peecky avatar saaj avatar ycha avatar yous avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

warp's Issues

Do not enforce non-standard Proxy-Connection header

You can use standard Connecton, as Proxy-Connection is, according to Wiki, Implemented as a misunderstanding of the HTTP specifications. Common because of mistakes in implementations of early HTTP versions. Has exactly the same functionality as standard Connection field. For more details seee the Proxy-Connection: header is a mistake in how some web browsers use HTTP.

But because some clients, curl for instance, send Proxy-Connection some fallback may be needed. Though neither is required by the spec.

Specifically, current implementation doesn't work with aiohttp proxy connector which sends Connection header.

Return asyncio.Server from start_warp_server

Return asyncio.Server from start_warp_server so it can later be stopped programmatically. E.g. in tearDown of a test case.

Also returning 1 from start_warp_server in case of the error doesn't make sense (if you didn't really mean sys.exit(1)). So it's better to make it either return asyncio.Server or raise.

NameError in start_warp_server

    try:
        accept = functools.partial(accept_client, loop=loop)
        yield from asyncio.start_server(accept, host=host, port=port, loop=loop)
    except error as e:
        logger.critical('!!! Fail to bind server at [%s:%d]: %s' % (host, port, e.args[1]))
        return 1
    logger.info('Server bound at [%s:%d].' % (host, port))

NameError: name 'error' is not defined is there because error, obviously, is not a builtin. To catch address-already-in-use OSError should be used.

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.