my blog my blog

Monthly 8月 2015
Linux下shell小数运算的笔记

 

首先,linux shell下默认变量的计算小数都省略掉了,也就是0.99999其实就是0,这个很不好,有时候我们需要统计小数的。

好了,用echo + bc的组合可以实现。

  1. echo "scale=4; $BYTES_SENT/1024/1024"|bc 

scale可以设置小数点后保留4位。

但是问题又出来了,如果是0.9999则显示的是.9999,小数点前面的0又不显示了,bc也是够了逗比了,好吧,继续折腾。

  1. echo "scale=4; $BYTES_SENT/1024/1024"|bc|awk '{printf "%.4f", $0}' 

这样子下来,用awk再来格式化下,只怪奶牛shell学得很渣,但是很多东西查到了还是很好学习的,记录下。

autoproxy改版for firefox下载

 

autoproxy在firefox新版本中很多无法使用订阅功能,用这个改版还是比较好的选择。

下载地址:http://www.400gb.com/file/114503453

使用方法:下载后直接拖动文件到firefox的地址栏即可安装。

Nginx为网站目录设置密码保护

 

在Nginx的nginx.conf里面有如下的字段

  1. server
  2.     {
  3.         listen 80 default_server;
  4.         #listen [::]:80 default_server ipv6only=on;
  5.         server_name www.nenew.net;
  6.         index index.html index.htm index.php;
  7.         root  /home/wwwroot/default;
  8.         #error_page   404   /404.html;
  9.         include enable-php.conf;
  10.         location /nginx_status
  11.         {
  12.             stub_status on;
  13.             access_log   off;
  14.         }
  15.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  16.         {
  17.             expires      30d;
  18.         }
  19.         location ~ .*\.(js|css)?$
  20.         {
  21.             expires      12h;
  22.         }
  23.         location ~ /\.
  24.         {
  25.             deny all;
  26.         }
  27.         access_log  /home/wwwlogs/access.log  access;
  28.     }
  29. include vhost/*.conf;
  30. }

如果我们想在默认的目录添加密码保护,只保护对目录的访问,也就是登陆这个目录就会输入密码,则我们这样设置

  1. server
  2.     {
  3.         listen 80 default_server;
  4.         #listen [::]:80 default_server ipv6only=on;
  5.         server_name www.nenew.net;
  6.         index index.html index.htm index.php;
  7.         root  /home/wwwroot/default;
  8.         #error_page   404   /404.html;
  9.         include enable-php.conf;
  10.         location /nginx_status
  11.         {
  12.             stub_status on;
  13.             access_log   off;
  14.         }
  15.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  16.         {
  17.             expires      30d;
  18.         }
  19.         location ~ .*\.(js|css)?$
  20.         {
  21.             expires      12h;
  22.         }
  23.         location ~ /\.
  24.         {
  25.             deny all;
  26.         }
  27.         location / 
  28.         {        
  29.   auth_basic “Restricted”;
  30. auth_basic_user_file pass_file;
  31. }
  32.         access_log  /home/wwwlogs/access.log  access;
  33.     }
  34. include vhost/*.conf;
  35. }

其中pass_file是密码文件的绝对路径,密码文件是由用户名和函数 crypt加密的密码组成,可以使htpasswd -c -d pass_file username 来生成。

Ubuntu下shadowsocks多用户后端manyuser+前端sspanel搭建教程

 

好吧,很多东西还是有个前端管理起来比较方便,奶牛今天也配了个,写下过程记录下。

安装shadowsocks支持

  1. apt-get install python-pip python-m2crypto
  2. pip install cymysql

安装LNMP

  1. wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp

后端安装配置

  1. git clone -b manyuser https://github.com/mengskysama/shadowsocks.git 
  2. cd ./shadowsocks/shadowsocks 
  3. vim Config.py 
  4.     #Config 
  5.     MYSQL_HOST = 'localhost' #这一行是服务器IP,127.0.0.1表示本机 
  6.     MYSQL_PORT = 3306 #数据库端口号 
  7.     MYSQL_USER = 'nenew' #数据库用户名 
  8.     MYSQL_PASS = 'nenew' #数据库密码 
  9.     MYSQL_DB = 'shadowsocks' #数据库名称 
  10.  
  11.     MANAGE_PASS = 'ss233333333' 
  12.     #if you want manage in other server you should set this value to global ip 
  13.     MANAGE_BIND_IP = '127.0.0.1' 
  14.     #make sure this port is idle 
  15.     MANAGE_PORT = 23333 
  16.  
  17. python server.py 

在mysql数据库中新建数据库shadowsocks,并添加用户nenew,导入manyuser中的sql文件,然后执行python server.py。如果没有异常,则表示已经安装成功后端。

前端安装:

  1. lnmp vhost add 

添加虚拟主机,然后进入虚拟主机目录

  1. wget https://github.com/orvice/ss-panel/archive/master.zip 
  2. unzip master.zip 
  3. rm master.zip 
  4. mv -f ss-panel-master/* ./ 
  5. mv lib/config-simple.php lib/config.php 
  6. vim lib/config.php 

编辑配置信息,然后将lib文件夹下的sql文件都导入到nenew数据库中。

添加守护进程supervisor:

  1. apt-get install supervisor 
  2. echo_supervisord_conf > /etc/supervisor/supervisord.conf 
  3. vim /etc/supervisor/supervisord.conf 

将文件最后添加

  1. [program:shadowsocks] 
  2. command=python /root/shadowsocks/shadowsocks/server.py -c /root/shadowsocks/shadowsocks/config.json 
  3. autorestart=true 
  4. user=root 

其中的目录自己根据实际情况设置,重启即可。

前端github:https://github.com/orvice/ss-panel

后端github:https://github.com/mengskysama/shadowsocks

顺带广告,ss服务器150元每年,需要者联系,联系方式见杂货铺。

PPTP VPN之日志功能实现【记录登陆用户、登陆时间、登陆IP、在线时间、流量统计等信息】

 

其实以前也搞过PPTP VPN的配置,但是当时都是存在于建立,很多细节的方面并没有做好。今天来搞下这个日志系统吧,主要实现是通过ip-up 和ip-down两个脚本来实现的。这里说下原理吧,原理是通过pptp建立连接的时候都会执行ip-up,然后断线会执行ip-down。首先看看man pppd里面的一些内容:

  1. SCRIPTS 
  2.        Pppd  invokes  scripts at various stages in its processing which can be 
  3.        used to perform site-specific ancillary processing.  These scripts  are 
  4.        usually  shell  scripts,  but  could  be executable code files instead. 
  5.        Pppd does not wait for the scripts to finish (except for the  ip-pre-up 
  6.        script).  The scripts are executed as root (with the real and effective 
  7.        user-id set to 0), so that they can do things such  as  update  routing 
  8.        tables  or  run  privileged  daemons.   Be careful that the contents of 
  9.        these scripts do not compromise your system's security.  Pppd runs  the 
  10.        scripts  with standard input, output and error redirected to /dev/null, 
  11.        and with an environment that is empty except for some environment vari- 
  12.        ables  that give information about the link.  The environment variables 
  13.        that pppd sets are: 
  14.  
  15.        DEVICE The name of the serial tty device being used. 
  16.  
  17.        IFNAME The name of the network interface being used. 
  18.  
  19.        IPLOCAL 
  20.               The IP address for the local end of the link.  This is only  set 
  21.               when IPCP has come up. 
  22.  
  23.        IPREMOTE 
  24.               The IP address for the remote end of the link.  This is only set 
  25.               when IPCP has come up. 
  26.  
  27.        PEERNAME 
  28.               The authenticated name of the peer.  This is  only  set  if  the 
  29.               peer authenticates itself. 
  30.  
  31.        SPEED  The baud rate of the tty device. 
  32.  
  33.        ORIG_UID 
  34.               The real user-id of the user who invoked pppd. 
  35.  
  36.        PPPLOGNAME 
  37.               The  username  of  the  real  user-id that invoked pppd. This is 
  38.               always set. 
  39.  
  40.        For the ip-down and auth-down scripts, pppd  also  sets  the  following 
  41.        variables giving statistics for the connection: 
  42.  
  43.        CONNECT_TIME 
  44.               The  number  of  seconds  from  when the PPP negotiation started 
  45.               until the connection was terminated. 
  46.  
  47.        BYTES_SENT 
  48.               The number of bytes sent (at the level of the serial port)  dur- 
  49.               ing the connection. 
  50.  
  51.        BYTES_RCVD 
  52.               The  number  of bytes received (at the level of the serial port) 
  53.               during the connection. 
  54.  
  55.        LINKNAME 
  56.               The logical name of the link, set with the linkname option. 
  57.  
  58.        CALL_FILE 
  59.               The value of the call option. 
  60.  
  61.        DNS1   If the peer supplies DNS server addresses, this variable is  set 
  62.               to the first DNS server address supplied. 
  63.  
  64.        DNS2   If  the peer supplies DNS server addresses, this variable is set 
  65.               to the second DNS server address supplied. 
  66.  
  67.        Pppd invokes the following scripts, if they exist.  It is not an  error 
  68.        if they don't exist. 
  69.  
  70.        /etc/ppp/auth-up 
  71.               A  program  or  script which is executed after the remote system 
  72.               successfully authenticates itself.   It  is  executed  with  the 
  73.               parameters 
  74.  
  75.               interface-name peer-name user-name tty-device speed 
  76.  
  77.               Note  that  this  script  is  not  executed  if the peer doesn't 
  78.               authenticate itself, for example when the noauth option is used. 
  79.  
  80.        /etc/ppp/auth-down 
  81.               A program or script which is executed when the link  goes  down, 
  82.               if  /etc/ppp/auth-up was previously executed.  It is executed in 
  83.               the same manner with the same parameters as /etc/ppp/auth-up. 
  84.  
  85.        /etc/ppp/ip-pre-up 
  86.               A program or script which is executed just before the  ppp  net- 
  87.               work  interface  is  brought  up.   It is executed with the same 
  88.               parameters as the ip-up  script  (below).   At  this  point  the 
  89.               interface  exists  and  has  IP  addresses assigned but is still 
  90.               down.  This can be used to add  firewall  rules  before  any  IP 
  91.               traffic can pass through the interface.  Pppd will wait for this 
  92.               script to finish before  bringing  the  interface  up,  so  this 
  93.               script should run quickly. 
  94.  
  95.        /etc/ppp/ip-up 
  96.               A program or script which is executed when the link is available 
  97.               for sending and receiving IP packets (that  is,  IPCP  has  come 
  98.               up).  It is executed with the parameters 
  99.  
  100.               interface-name       tty-device      speed      local-IP-address 
  101.               remote-IP-address ipparam 
  102.  
  103.        /etc/ppp/ip-down 
  104.               A program or script which is executed when the link is no longer 
  105.               available for sending and receiving IP packets.  This script can 
  106.               be used for  undoing  the  effects  of  the  /etc/ppp/ip-up  and 
  107.               /etc/ppp/ip-pre-up  scripts.   It  is invoked in the same manner 
  108.               and with the same parameters as the ip-up script. 
  109.  
  110.        /etc/ppp/ipv6-up 
  111.               Like /etc/ppp/ip-up, except that it is executed when the link is 
  112.               available for sending and receiving IPv6 packets. It is executed 
  113.               with the parameters 
  114.  
  115.               interface-name   tty-device    speed    local-link-local-address 
  116.               remote-link-local-address ipparam 
  117.  
  118.        /etc/ppp/ipv6-down 
  119.               Similar  to /etc/ppp/ip-down, but it is executed when IPv6 pack- 
  120.               ets can no longer be transmitted on the  link.  It  is  executed 
  121.               with the same parameters as the ipv6-up script. 
  122.  
  123.        /etc/ppp/ipx-up 
  124.               A program or script which is executed when the link is available 
  125.               for sending and receiving IPX packets (that is, IPXCP  has  come 
  126.               up).  It is executed with the parameters 
  127.  
  128.               interface-name       tty-device       speed       network-number 
  129.               local-IPX-node-address  remote-IPX-node-address  local-IPX-rout- 
  130.               ing-protocol  remote-IPX-routing-protocol  local-IPX-router-name 
  131.               remote-IPX-router-name ipparam pppd-pid 
  132.  
  133.               The local-IPX-routing-protocol  and  remote-IPX-routing-protocol 
  134.               field may be one of the following: 
  135.  
  136.               NONE      to indicate that there is no routing protocol 
  137.               RIP       to indicate that RIP/SAP should be used 
  138.               NLSP      to indicate that Novell NLSP should be used 
  139.               RIP NLSP  to indicate that both RIP/SAP and NLSP should be used 
  140.  
  141.        /etc/ppp/ipx-down 
  142.               A program or script which is executed when the link is no longer 
  143.               available for sending and receiving IPX  packets.   This  script 
  144.               can  be  used  for  undoing  the  effects of the /etc/ppp/ipx-up 
  145.               script.  It is invoked in the same  manner  and  with  the  same 
  146.               parameters as the ipx-up script. 

这就是ppp的脚本内容,里面当然有变量咯,这些变量就是我们需要的。

好了,那么开始进行日志整理吧,首先是ip-up

  1. vim /etc/ppp/ip-up 
  2. #!/bin/sh 
  3. # This script is run by the pppd after the link is established. 
  4. # It uses run-parts to run scripts in /etc/ppp/ip-up.d, so to add routes, 
  5. # set IP address, run the mailq etc. you should create script(s) there. 
  6. # Be aware that other packages may include /etc/ppp/ip-up.d scripts (named 
  7. # after that package), so choose local script names with that in mind. 
  8. # This script is called with the following arguments: 
  9. #    Arg  Name                          Example 
  10. #    $1   Interface name                ppp0 
  11. #    $2   The tty                       ttyS1 
  12. #    $3   The link speed                38400 
  13. #    $4   Local IP number               12.34.56.78 
  14. #    $5   Peer  IP number               12.34.56.99 
  15. #    $6   Optional ``ipparam'' value    foo 
  16.  
  17. # The  environment is cleared before executing this script 
  18. # so the path must be reset 
  19. PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin 
  20. export PATH 
  21.  
  22. # These variables are for the use of the scripts run by run-parts 
  23. PPP_IFACE="$1" 
  24. PPP_TTY="$2" 
  25. PPP_SPEED="$3" 
  26. PPP_LOCAL="$4" 
  27. PPP_REMOTE="$5" 
  28. PPP_IPPARAM="$6" 
  29. export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM 
  30.  
  31. # as an additional convenience, $PPP_TTYNAME is set to the tty name, 
  32. # stripped of /dev/ (if present) for easier matching. 
  33. PPP_TTYNAME=`/usr/bin/basename "$2"` 
  34. export PPP_TTYNAME 
  35.  
  36. # If /var/log/ppp-ipupdown.log exists use it for logging. 
  37. if [ -e /var/log/ppp-ipupdown.log ]; then 
  38.   exec > /var/log/ppp-ipupdown.log 2>&1 
  39.   echo $0 $@ 
  40.   echo 
  41. fi 
  42.  
  43. # This script can be used to override the .d files supplied by other packages. 
  44. if [ -x /etc/ppp/ip-up.local ]; then 
  45.   exec /etc/ppp/ip-up.local "$@" 
  46. fi 
  47.  
  48. run-parts /etc/ppp/ip-up.d \ 
  49.   --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6" 
  50.  
  51. # if pon was called with the "quick" argument, stop pppd 
  52. if [ -e /var/run/ppp-quick ]; then 
  53.   rm /var/run/ppp-quick 
  54.   wait 
  55.   kill $PPPD_PID 
  56. fi 
  57.  
  58. /sbin/iptables -t nat -A POSTROUTING -s  172.16.36.0/24 -j SNAT --to-source "serverip" 这里设置每次登陆时候都设定一次路由转发,避免失效。 
  59.  
  60. echo "****************************************************" > /var/log/pptpd-${1}.log 将所有内容导入到pptpd-${1}.log,以防多用户登陆时候造成日志混乱 
  61. echo "username: $PEERNAME" >> /var/log/pptpd-${1}.log 
  62. echo "clientIP: $6" >> /var/log/pptpd-${1}.log 
  63. echo "device: $1" >> /var/log/pptpd-${1}.log 
  64. echo "vpnIP: $4" >> /var/log/pptpd-${1}.log 
  65. echo "assignIP: $5" >> /var/log/pptpd-${1}.log 
  66. echo "logintime: `date -d today +%F_%T`" >> /var/log/pptpd-${1}.log 

然后是ip-up的处理:

  1. vim /etc/ppp/ip-down 
  2. #!/bin/sh 
  3. # This script is run by the pppd _after_ the link is brought down. 
  4. # It uses run-parts to run scripts in /etc/ppp/ip-down.d, so to delete 
  5. # routes, unset IP addresses etc. you should create script(s) there. 
  6. # Be aware that other packages may include /etc/ppp/ip-down.d scripts (named 
  7. # after that package), so choose local script names with that in mind. 
  8. # This script is called with the following arguments: 
  9. #    Arg  Name                          Example 
  10. #    $1   Interface name                ppp0 
  11. #    $2   The tty                       ttyS1 
  12. #    $3   The link speed                38400 
  13. #    $4   Local IP number               12.34.56.78 
  14. #    $5   Peer  IP number               12.34.56.99 
  15. #    $6   Optional ``ipparam'' value    foo 
  16.  
  17. # The  environment is cleared before executing this script 
  18. # so the path must be reset 
  19. PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin 
  20. export PATH 
  21.  
  22. # These variables are for the use of the scripts run by run-parts 
  23. PPP_IFACE="$1" 
  24. PPP_TTY="$2" 
  25. PPP_SPEED="$3" 
  26. PPP_LOCAL="$4" 
  27. PPP_REMOTE="$5" 
  28. PPP_IPPARAM="$6" 
  29. export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM 
  30.  
  31. # as an additional convenience, $PPP_TTYNAME is set to the tty name, 
  32. # stripped of /dev/ (if present) for easier matching. 
  33. PPP_TTYNAME=`/usr/bin/basename "$2"` 
  34. export PPP_TTYNAME 
  35.  
  36. # If /var/log/ppp-ipupdown.log exists use it for logging. 
  37. if [ -e /var/log/ppp-ipupdown.log ]; then 
  38.   exec >> /var/log/ppp-ipupdown.log 2>&1 
  39.   echo $0 $@ 
  40.   echo 
  41. fi 
  42.  
  43.  
  44. echo "downtime: `date -d today +%F_%T`" >> /var/log/pptpd-${1}.log 
  45. echo "bytes sent: $BYTES_SENT" >> /var/log/pptpd-${1}.log 
  46. echo "bytes received: $BYTES_RCVD" >> /var/log/pptpd-${1}.log 
  47. echo "connect time: $CONNECT_TIME" >> /var/log/pptpd-${1}.log 
  48. echo "****************************************************" >> /var/log/pptpd-${1}.log 
  49. cat /var/log/pptpd-${1}.log >> /var/log/pptpd.log
  50.  
  51.  
  52.  
  53. # This script can be used to override the .d files supplied by other packages. 
  54. if [ -x /etc/ppp/ip-down.local ]; then 
  55.   exec /etc/ppp/ip-down.local "$@" 
  56. fi 
  57.  
  58. run-parts /etc/ppp/ip-down.d \ 
  59.   --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6" 

最后就可以通过/var/log/pptpd.log文件进行查看PPTP VPN日志了。日志形式如下,需要更美观的自行修改代码:

  1. **************************************************** 
  2. username: nenew 
  3. clientIP: XXX.XXX.XXX.XXX 
  4. device: ppp0 
  5. vpnIP: 172.16.36.1 
  6. assignIP: 172.16.36.2 
  7. logintime: 2015-08-03_17:06:05 
  8. downtime: 2015-08-03_17:06:23 
  9. bytes sent: 164143 
  10. bytes received: 51606 
  11. connect time: 18 
  12. **************************************************** 
OpenVZ VPS的pptp服务安装注意

 

iptables -t nat -A POSTROUTING -s  172.16.36.0/24 -j SNAT –to-source vps网关这句话最好加到/etc/rc.local中,否则可能无法转发,及时iptables-rules里面有。

  1. cat /dev/ppp 
  2. cat: /dev/ppp: No such device or address 
  3. cat /dev/net/tun 
  4. cat: /dev/net/tun: File descriptor in bad state 

  是需要检查的。

网卡可能不是eth0,可能是venet0,而且还可能是venet0:0,看好,看好。

安装脚步for ubuntu pptp vpn

  1. #!/bin/bash 
  2.  
  3. if [ $(id -u) != "0" ]; then 
  4.     printf "Error: You must be root to run this tool!\n" 
  5.     exit 1 
  6. fi 
  7. clear 
  8. printf " 
  9. #################################################### 
  10. #                                                  # 
  11. # This is a Shell-Based tool of pptp installation  # 
  12. # Version: 0.1                                     # 
  13. # Author: Bruce Ku                                 # 
  14. # For Debian/Ubuntu 32bit and 64bit                # 
  15. #                                                  # 
  16. #################################################### 
  17. vpsip=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'` 
  18. apt-get update 
  19. apt-get --purge remove pptpd ppp 
  20. rm -rf /etc/pptpd.conf 
  21. rm -rf /etc/ppp 
  22. apt-get install -y ppp 
  23. apt-get install -y pptpd 
  24. apt-get install -y iptables logrotate tar cpio perl 
  25. rm -r /dev/ppp 
  26. mknod /dev/ppp c 108 0 
  27. echo 1 > /proc/sys/net/ipv4/ip_forward  
  28. echo "mknod /dev/ppp c 108 0" >> /etc/rc.local 
  29. echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local 
  30. echo "net.ipv4.ip_forward = 1>> /etc/sysctl.conf 
  31. echo "localip 172.16.36.1" >> /etc/pptpd.conf 
  32. echo "remoteip 172.16.36.2-254" >> /etc/pptpd.conf 
  33. echo "ms-dns 8.8.8.8" >> /etc/ppp/options 
  34. echo "ms-dns 8.8.4.4" >> /etc/ppp/options 
  35. echo "vpn pptpd 123456 *" >> /etc/ppp/chap-secrets 
  36. iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'` 
  37. iptables -A FORWARD -p tcp --syn -s 172.16.36.0/24 -j TCPMSS --set-mss 1356 
  38. iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -j SNAT --to-source "$vpsip" 
  39. iptables-save > /etc/iptables-rules 
  40. printf " 
  41. #################################################### 
  42. add my Yu 
  43. #################################################### 
  44. echo "pre-up iptables-restore < /etc/iptables-rules" >> /etc/network/interfaces 
  45. printf " 
  46. #################################################### 
  47. add my Yu 
  48. #################################################### 
  49. /etc/init.d/pptpd restart 
  50. printf " 
  51. #################################################### 
  52. #                                                  # 
  53. # This is a Shell-Based tool of pptp installation  # 
  54. # Version: 0.1                                     # 
  55. # Author: Bruce Ku                                 # 
  56. # For Debian/Ubuntu 32bit and 64bit                # 
  57. #                                                  # 
  58. #################################################### 
  59. ServerIP:$vpsip 
  60. username:vpn 
  61. password:123456 
  62.  

安装完成重启

Feedly订阅导出

 

Feedly订阅导出直接访问网址:http://feedly.com/i/opml

64位版本的SocksCap64代理程序介绍与推荐

 

奶牛最近在找一个好用的代理程序,支持socks5的tcp和udp两种协议,并且支持64位win8系统,终于最后找到了这个sockscap64.

首先很难的,作者是国人,并且提倡软件免费,并打算一直免费提供sockscap64这软件。sockscap64目前支持socks代理和http代理,并且支持tcp和udp,Sockscap64是基于远程DLL注入技术, 通过修改系统Winsock的API后从而使运行于Sockscap64的网络软件通过SOCKS代理访问网络; 从而实现网络加速或突破局域网限制的功能。经过测试udp功能也比较稳定。

特此推荐,下载http://www.sockscap64.com/software/SocksCap64-setup-2.6.exe