Coder Social home page Coder Social logo

socks5_c's Introduction

socks5_c

Build Status

一个轻量级的 socks5 代理, 采用单进程多路复用 IO 模式. 可用于科学上网.

目前仅支持 UNIX/Linux 平台

编译:

$ make

生成的目标文件有:

  • local: 运行在本地, 是沟通浏览器等应用程序与 server 的桥梁, 处理使用 socks5 代理的应用程序的请求, 转发给 server
  • server: 响应 local 的请求, 获取网站数据处理后返回给 local

使用方法

$ ./server -h
usage: ./server [-p server_port] [-m xor|rc4] [-e key]
$ ./local -h
usage: ./local [-l remote_ip] [-p remote_port] [-s listen_port] [-m xor|rc4] [-e key]

运行实例:

假设服务器 IP 地址为: 104.167.51.31, 在服务器上运行 server:

$ # 在 1984 端口监听等待连接, 使用 rc4 方法加密,  密钥为 "test"
$ ./server -p 1984 -m rc4 -e "test"

在本地运行 local:

$ # 连接服务器的 1984 端口, 在本地 2080 端口监听, 使用 rc4 方法加密, 密钥为"test"
$ ./local -l 104.167.51.31 -p 1984 -s 2080 -m rc4 -e "test"
  • Firefox 浏览器设置: socks 主机填写 127.0.0.1, 端口填写: 2080, 选择 SOCKS v5 代理.

  • Chromium/Chrome 可以通过启动参数加载 PAC:

$ cd socks5_c
$ PAC_URL=$(pwd)
$ chromium-browser -proxy-pac-url="file://"${PAC_URL}"/test.pac"
  • 使用 curl 测试:
$ curl -v --socks5-hostname 127.0.0.1:2080 http://www.fanfou.com

授权协议

socks5_c 在 MIT license 协议下发布. 参见 LICENSE.md 文件.

socks5_c's People

Contributors

hmgle avatar xuchunyang 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

socks5_c's Issues

Unable to build on Mac OS X

fd_set is no available on Mac

➜  socks5_c git:(master) make
cc -Wall -O0 -DDEBUG=1 -g   -c -o local.o local.c
cc -Wall -O0 -DDEBUG=1 -g   -c -o buffer.o buffer.c
cc -Wall -O0 -DDEBUG=1 -g   -c -o encrypt.o encrypt.c
cc -Wall -O0 -DDEBUG=1 -g   -c -o socket_wrap.o socket_wrap.c
cc -Wall -O0 -DDEBUG=1 -g   -c -o socks.o socks.c
In file included from socks.c:1:
./socks.h:24:2: error: unknown type name 'fd_set'
        fd_set rfds, wfds;
        ^
./socks.h:27:2: error: unknown type name 'fd_set'
        fd_set _rfds, _wfds;
        ^
2 errors generated.
make: *** [socks.o] Error 1

不稳定啊,才翻墙不到一分钟,服务器上出现如下提示,怎么解决?

root@ar:~/socks5_c# debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close
debug_print: socks.c: 347: ss_request_handle():ss_get_requests() failed: Success
debug_print: server.c: 101: ss_io_handle():close

root@ar:~/socks5_c#

ss_remote_io_handle() 和 client_to_remote() 调用 ss_server_del_conn() 问题

假如 conn_fd 和 remote_fd 在一个 select() 返回后都可读, 而且都是关闭文件事件, 事件循环处理器稍后执行到 client_fo_remote() -> recv(conn_fd, ...) -> ss_server_del_conn() 会把这个 conn 结构体释放掉, 但在同一轮的事件循环处理中, 就要执行到 ss_remote_io_handle() -> recv(remote_fd, ...) -> ss_server_del_conn(), 这个 conn 在前面已经释放掉, 于是 segmentation fault (core dumped)!!!

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.