Giter VIP home page Giter VIP logo

cow's People

Contributors

breath-co2 avatar comicfans avatar cyfdecyf avatar fzerorubigd avatar glacjay avatar haha1903 avatar hyiltiz avatar luosheng avatar perrywky avatar styxyang avatar sunteya avatar tevino avatar xupefei avatar zellux avatar zyxar 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  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

cow's Issues

一连被墙网站就crash

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x12aca]

goroutine 15 [running]:
main.(_serverConn).doConnect(0xf8400ef000, 0xf8400e20c0, 0xf8400998a0, 0x0, 0x0, ...)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:813 +0xe1
main.(_clientConn).serve(0xf8400998a0, 0x0)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:281 +0x49f
created by main.(*Proxy).Serve
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:124 +0x4ed

goroutine 1 [chan receive]:
net.(_pollServer).WaitRead(0xf84009b840, 0xf8400b4000, 0xf8400992a0, 0x23, 0x1, ...)
/usr/local/go/src/pkg/net/fd.go:268 +0x73
net.(_netFD).accept(0xf8400b4000, 0xa88d6, 0x0, 0xf840056cc0, 0xf84006e040, ...)
/usr/local/go/src/pkg/net/fd.go:622 +0x20d
net.(_TCPListener).AcceptTCP(0xf84006e450, 0xf84009bc40, 0x0, 0x0, 0x8, ...)
/usr/local/go/src/pkg/net/tcpsock_posix.go:320 +0x71
net.(_TCPListener).Accept(0xf84006e450, 0x0, 0x0, 0x0, 0x0, ...)
/usr/local/go/src/pkg/net/tcpsock_posix.go:330 +0x49
main.(*Proxy).Serve(0xf840057d80, 0xf840057d80)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:115 +0x298
main.main()
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/main.go:81 +0x1a3

goroutine 2 [syscall]:
created by runtime.main
/usr/local/go/src/pkg/runtime/proc.c:221

goroutine 3 [syscall]:
os/signal.loop()
/usr/local/go/src/pkg/os/signal/signal_unix.go:20 +0x1c
created by os/signal.init·1
/usr/local/go/src/pkg/os/signal/signal_unix.go:26 +0x2f

goroutine 4 [chan receive]:
main.sigHandler()
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/main.go:19 +0x140
created by main.main
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/main.go:77 +0x13b

goroutine 6 [syscall]:
syscall.Syscall6()
/usr/local/go/src/pkg/syscall/asm_darwin_amd64.s:38 +0x5
syscall.kevent(0x9, 0x0, 0x0, 0xf8400b3008, 0x10000000a, ...)
/usr/local/go/src/pkg/syscall/zsyscall_darwin_amd64.go:199 +0x88
syscall.Kevent(0xf800000009, 0x0, 0x0, 0xf8400b3008, 0xa0000000a, ...)
/usr/local/go/src/pkg/syscall/syscall_bsd.go:546 +0xa4
net.(_pollster).WaitFD(0xf8400b3000, 0xf84009b840, 0x1ccf64d48, 0x0, 0x0, ...)
/usr/local/go/src/pkg/net/fd_darwin.go:96 +0x185
net.(_pollServer).Run(0xf84009b840, 0x0)
/usr/local/go/src/pkg/net/fd.go:236 +0xe4
created by net.newPollServer
/usr/local/go/src/pkg/net/newpollserver.go:35 +0x382

goroutine 9 [syscall]:
created by addtimer
/usr/local/go/src/pkg/runtime/ztime_amd64.c:72

goroutine 11 [chan receive]:
net.(_pollServer).WaitRead(0xf84009b840, 0xf8400b41b0, 0xf8400992a0, 0x23, 0x1, ...)
/usr/local/go/src/pkg/net/fd.go:268 +0x73
net.(_netFD).Read(0xf8400b41b0, 0xf8400e6000, 0x100000001000, 0xffffffff, 0xf840056cc0, ...)
/usr/local/go/src/pkg/net/fd.go:428 +0x1ec
net.(_TCPConn).Read(0xf84006e638, 0xf8400e6000, 0x100000001000, 0x1759ac, 0x0, ...)
/usr/local/go/src/pkg/net/tcpsock_posix.go:87 +0xce
main.copyClient2Server(0xf8400995d0, 0xf840001c80, 0xf840001cd0, 0xf8400d9000, 0x0, ...)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:741 +0x902
main.(_serverConn).doConnect(0xf840001c80, 0xf8400d9000, 0xf8400995d0, 0x0, 0x0, ...)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:841 +0x561
main.(_clientConn).serve(0xf8400995d0, 0x0)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:281 +0x49f
created by main.(_Proxy).Serve
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:124 +0x4ed

goroutine 13 [chan receive]:
net.(_pollServer).WaitRead(0xf84009b840, 0xf8400b4240, 0xf8400992a0, 0x23, 0x1, ...)
/usr/local/go/src/pkg/net/fd.go:268 +0x73
net.(_netFD).Read(0xf8400b4240, 0xf8400e7000, 0x100000001000, 0xffffffff, 0xf840056cc0, ...)
/usr/local/go/src/pkg/net/fd.go:428 +0x1ec
net.(_TCPConn).Read(0xf84006eb78, 0xf8400e7000, 0x100000001000, 0x1759cc, 0x0, ...)
/usr/local/go/src/pkg/net/tcpsock_posix.go:87 +0xce
main.copyServer2Client(0xf840001c80, 0xf8400995d0, 0xf840001d20, 0xf8400d9000, 0x0, ...)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:674 +0x1dc
main._func_001(0xf8400b8610, 0xf84006e950, 0xf84006e960, 0xf84006e970, 0xf84006e958, ...)
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:836 +0x54
created by main.(_serverConn).doConnect
/Users/alex/local/mygo/src/github.com/cyfdecyf/cow/proxy.go:839 +0x51e

site_blocked.go 和 site_direct.go 能否独立出来?

site_blocked.go 和 site_direct.go 能否独立出来?
成为site_blocked.json 和 site_direct.json 或.txt文本格式,这样便于编辑和添加网址。

ISP或公司防火墙有时会屏蔽 百度网盘、迅雷离线、迅雷看看、淘宝天猫、微博等,这些网址一直处在site_direct.go里。

下载master.zip源码再编译,有诸多不便,如需要安装go语言程序、个人水平、电脑使用环境因素(如有的机器权限不够没法安装程序等)等。

有关 COW 如何检测被墙网站


COW 如何检测被墙网站

COW 将以下错误认为是墙在作怪:

服务器连接被重置 (connection reset)
创建连接超时
服务器读操作超时

下面这一条归类到 创建连接超时 或 服务器读操作超时 当中了吧,
错误 324 (net::ERR_EMPTY_RESPONSE):服务器已断开连接,且未发送任何数据。
单独作为一条,检测效率是否更高效。

Snova / GSnova 增强的PAC实现SPAC(Special Proxy Auto Config)
http://code.google.com/p/snova/ https://github.com/yinqiwen/gsnova
默认的智能代理127.0.0.1:48100,全局代理127.0.0.1:48102
使用智能代理48100端口翻墙效果很好。好像是使用gfwlist转换成pac,我没看明白。

wallproxy
http://code.google.com/p/wallproxy/
http://code.google.com/p/wwqgtxx-goagent/ 中的 wwqgtxx-wallproxy-Release-noFirefox-1.3.7z 使用的就是wallproxy ,启动后在系统右下角托盘处,单击 设置代理 打开代理设置对话框。

默认的智能代理127.0.0.1:8086,自动代理pac(自动更新) 作用于 IE浏览器代理设置, internet属性 →局域网设置 → 使用自动配置脚本 PAC。

wallproxy智能代理 比 自动代理pac 要强大,有些被墙的网页,自动代理pac模式下打不开,智能代理可以很顺利打开。使用智能代理8086端口翻墙效果很好。

希望作者观察对比一下,他们的检测机制如何,融合wallproxy 、Snova的优点。

请求增加多个shadowsocks 服务器之间负载均衡的功能

我的cow放在公司内网供集体使用。最近发现连接变的缓慢了,换到另外一台同机房的shadowsocks 服务器就正常。应该是长城会对连接流量进行监控,发现异常就将让客户端和服务器的连接变的困难。希望有负载均衡功能

Support multiple user authentication

Hi Yufei,

When I tried to run multiple instances of cow, one for a port, I received the following error.

runtime: panic before malloc heap initialized
fatal error: runtime: cannot allocate heap metadata

By searching Google I found these links.

https://code.google.com/p/go/issues/detail?id=5236
https://codereview.appspot.com/9791044/

These explanations do not make sense to me. I hope you will have a solution:-)

Also is it possible to open multiple ports in one config file so that I only need to run one instance? And with different authentication for each port? A proposed config format would be:

listen = xxx.xxx.xxx.xxx
portUserPasswd = 1080:username1:password1
portUserPasswd = 1081:username2:password2
portUserPasswd = 1083:username3:password3

Thanks!

给大大一个建议

希望能变成C语言源码,移植性更强
支持透明代理 iptables类的转发支持

规则上能否支持正规表达式?类似于squid
白名单黑名单功能? 可以用来过滤广告什么的
最重要的就是移植openwrt系统下

cow访问taobao alipay的网站不正常

有一次出现了这个:

[Error] i/o timeout

HTTP Request GET trade.taobao.com:80/trade/itemlist/list_bought_items.htm?spm=a1z09.2.0.21.q73lIs

Direct connection failed, always direct site.

Generated by COW at Thu Mar 28 10:43:18 2013

建议~集成DNS proxy through sock5 server

cow的设计**非常好一个软件搞定所有问题不过DNS污染和注入还是会影响safari的和其他软件dns解析,作者大大能不能集成上一个dns服务器,如果发现被墙网站的dns请求就通过加密代理找支持tcpdns解析的域名服务器解析,否则就走本地?

5月2日忽然又开始崩溃了,之前好好的,也没升级过。

Windows 平台 0924973 版本,崩溃日志:

C:\Users\chujie\Desktop>D:

D:>cd D:\bin\

D:\bin>D:\bin\cow.exe
2013/05/02 08:35:35 COW proxy address 0.0.0.0:7777, PAC url http://:7777/pac
[ERROR] 2013/05/02 08:50:39 Unhandled server read error: WSARecv tcp 192.168.134.237:4304: The specified network name is
no longer available. GET m3.licdn.com:80/media-proxy/ext?w=80&h=60&f=''&hash=BUS2g942sqUxeZQAfURK%2FzKOBao%3D&url=http%
3A%2F%2Fblog.mozilla.org%2Fservices%2Ffiles%2F2013%2F04%2F56.png
[ERROR] 2013/05/02 09:05:16 Non CONNECT retry with request buffer released: POST cloud.feedly.com:80/v3/migration/bundle

panic: Non CONNECT handleRetry with request buffer released

goroutine 664 [running]:
main.(_clientConn).handleRetry(0x201b8880, 0x200ea5f0, 0x2012e140, 0x201fa700, 0x201835c8, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:241 +0x218
main.(_clientConn).serve(0x201b8880, 0x201852a0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:363 +0x889
created by main.(*Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

goroutine 1 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x2012c4a0, 0x2022c360, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).accept(0x200fed90, 0x45274b, 0x0, 0x0)
D:/go/go/src/pkg/net/fd_windows.go:547 +0x2a4
net.(_TCPListener).AcceptTCP(0x201b7e48, 0x2000, 0x0, 0x0)
D:/go/go/src/pkg/net/tcpsock_posix.go:320 +0x55
net.(_TCPListener).Accept(0x201b7e48, 0x0, 0x0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:330 +0x38
main.(*Proxy).Serve(0x201c6060, 0x200e7b80, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:162 +0x253
main.main()
D:/go/home/src/github.com/cyfdecyf/cow/main.go:87 +0x2a9

goroutine 2 [syscall]:
created by runtime.main
D:/go/go/src/pkg/runtime/proc.c:221

goroutine 3 [syscall]:
os/signal.loop()
D:/go/go/src/pkg/os/signal/signal_unix.go:20 +0x1e
created by os/signal.init路1
D:/go/go/src/pkg/os/signal/signal_unix.go:26 +0x31

goroutine 4 [sleep]:
time.Sleep(0x30b8a000, 0x346)
D:/go/go/src/pkg/runtime/ztime_386.c:21 +0x50
main._func_011()
D:/go/home/src/github.com/cyfdecyf/cow/sitestat.go:383 +0x2d
created by main.initSiteStat
D:/go/home/src/github.com/cyfdecyf/cow/sitestat.go:386 +0x67

goroutine 5 [sleep]:
time.Sleep(0xb2c97000, 0x8b)
D:/go/go/src/pkg/runtime/ztime_386.c:21 +0x50
main._func_001(0x201b7e00, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/pac.go:142 +0x30
created by main.initPAC
D:/go/home/src/github.com/cyfdecyf/cow/pac.go:146 +0xa4

goroutine 6 [chan receive]:
main.sigHandler()
D:/go/home/src/github.com/cyfdecyf/cow/main.go:21 +0x115
created by main.main
D:/go/home/src/github.com/cyfdecyf/cow/main.go:76 +0x12a

goroutine 10 [syscall]:
syscall.Syscall6(0x75914e90, 0x5, 0x21c, 0x201bec00, 0x201c9008, ...)
D:/go/go/src/pkg/runtime/zsyscall_windows_386.c:97 +0x49
syscall.GetQueuedCompletionStatus(0x21c, 0x201bec00, 0x201c9008, 0x201c9000, 0xffffffff, ...)
D:/go/go/src/pkg/syscall/zsyscall_windows_386.go:500 +0x76
net.(*resultSrv).Run(0x201b7e20, 0x42a3aa)
D:/go/go/src/pkg/net/fd_windows.go:107 +0x86
created by net.startServer
D:/go/go/src/pkg/net/fd_windows.go:211 +0xfc

goroutine 8 [sleep]:
time.Sleep(0xf8475800, 0xd)
D:/go/go/src/pkg/runtime/ztime_386.c:21 +0x50
main.runEstimateTimeout()
D:/go/home/src/github.com/cyfdecyf/cow/estimate_timeout.go:95 +0x6c
created by main.main
D:/go/home/src/github.com/cyfdecyf/cow/main.go:78 +0x146

goroutine 9 [syscall]:
created by addtimer
D:/go/go/src/pkg/runtime/ztime_386.c:72

goroutine 11 [select]:
net.(*ioSrv).ProcessRemoteIO(0x201b7e28, 0x0)
D:/go/go/src/pkg/net/fd_windows.go:138 +0x183
created by net.startServer
D:/go/go/src/pkg/net/fd_windows.go:216 +0x17c

goroutine 12 [finalizer wait]:
created by runtime.gc
D:/go/go/src/pkg/runtime/mgc0.c:882

goroutine 482 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x2026c7b0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x20290d90, 0x2018f000, 0x2000, 0x2000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x200b06b8, 0x2018f000, 0x2000, 0x2000, 0x4ab20c, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.(_serverConn).Read(0x20268a80, 0x2018f000, 0x2000, 0x2000, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/auth.go:0 +0x4e
github.com/cyfdecyf/bufio.(_Reader).fill(0x201daf60, 0x0)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:95 +0x114
github.com/cyfdecyf/bufio.(_Reader).PeekSlice(0x201daf60, 0x201fa30a, 0x0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:365 +0x1ca
main.sendBodyChunked(0x201daf60, 0x201b88a0, 0x201fa340, 0x2000, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1138 +0x4b
main.sendBody(0x201fa340, 0x20268a80, 0x0, 0x20268c00, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1243 +0xbf
main.(_clientConn).readResponse(0x201fa340, 0x20268a80, 0x200ea190, 0x20268c00, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:509 +0x410
main.(_serverConn).doRequest(0x20268a80, 0x201fa340, 0x200ea190, 0x20268c00, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1111 +0x115
main.(_clientConn).serve(0x201fa340, 0x202dd7c8)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:360 +0x7e2
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

goroutine 18 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x20263ab0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x2029f700, 0x202b2000, 0x2000, 0x2000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x201818e8, 0x202b2000, 0x2000, 0x2000, 0x2, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.(_serverConn).Read(0x201cc1c0, 0x202b2000, 0x2000, 0x2000, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/auth.go:0 +0x4e
github.com/cyfdecyf/bufio.(_Reader).fill(0x20263a80, 0x0)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:95 +0x114
github.com/cyfdecyf/bufio.(_Reader).ReadSlice(0x20263a80, 0x53910a, 0x0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:306 +0x1f2
main.parseResponse(0x201cc1c0, 0x20128a50, 0x201b00c0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/http.go:510 +0x78
main.(_clientConn).readResponse(0x201c6b60, 0x201cc1c0, 0x20128a50, 0x201b00c0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:485 +0x85
main.(_serverConn).doRequest(0x201cc1c0, 0x201c6b60, 0x20128a50, 0x201b00c0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1111 +0x115
main.(_clientConn).serve(0x201c6b60, 0x200b09b0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:360 +0x7e2
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

goroutine 659 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x20132bd0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x20290540, 0x2025c000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x200b0818, 0x2025c000, 0x1000, 0x1000, 0x821, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyClient2Server(0x20280700, 0x2017b200, 0x2027c050, 0x2017b2c0, 0x2017b280, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:964 +0x5bb
main._func_008(0x20131df0, 0x20131de0, 0x20131dc8, 0x20131dd8, 0x20131e00, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1024 +0x52
created by main.(_serverConn).doConnect
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1026 +0x2a7

goroutine 669 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x202633c0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x2029f8c0, 0x2015d000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x20181588, 0x2015d000, 0x1000, 0x1000, 0x113, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyServer2Client(0x2017b700, 0x2013bc60, 0x200eafa0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:847 +0xb9
main.(_serverConn).doConnect(0x2017b700, 0x200eafa0, 0x2013bc60, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1029 +0x2cb
main.(_clientConn).serve(0x2013bc60, 0x200b06a8)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:348 +0x6d5
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

goroutine 651 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x202d8e40, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x20290070, 0x20245000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x200b09f0, 0x20245000, 0x1000, 0x1000, 0x43, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyServer2Client(0x2029e740, 0x20283be0, 0x2027c1e0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:847 +0xb9
main.(_serverConn).doConnect(0x2029e740, 0x2027c1e0, 0x20283be0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1029 +0x2cb
main.(_clientConn).serve(0x20283be0, 0x200b0828)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:348 +0x6d5
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

goroutine 671 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x202632a0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x2029f850, 0x202a9000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x20181730, 0x202a9000, 0x1000, 0x1000, 0x1d7, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyClient2Server(0x2013bc60, 0x2017b700, 0x200eafa0, 0x2017b7c0, 0x2017b780, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:964 +0x5bb
main._func_008(0x201814b0, 0x201814a0, 0x20181490, 0x20181498, 0x201814c0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1024 +0x52
created by main.(_serverConn).doConnect
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1026 +0x2a7

goroutine 677 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6720, 0x201b4390, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Write(0x2029fd90, 0x202dd000, 0x2000, 0x2000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:460 +0x182
net.(_TCPConn).Write(0x20183400, 0x202dd000, 0x2000, 0x2000, 0x201832a8, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:103 +0xb0
main.(_serverWriter).Write(0x20183260, 0x202dd000, 0x2000, 0x2000, 0x2000, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:902 +0x58
main.copyN(0x201c6300, 0x20183260, 0x201b4cc0, 0x5cf0, 0x2000, ...)
D:/go/home/src/github.com/cyfdecyf/cow/util.go:308 +0xab
main.sendBodyWithContLen(0x201b4cc0, 0x201c6300, 0x20183260, 0xbcf0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1124 +0x56
main.sendBody(0x201c6ba0, 0x201ccb40, 0x2027cf50, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1245 +0xf9
main.(_serverConn).doRequest(0x201ccb40, 0x201c6ba0, 0x2027cf50, 0x202797c0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1096 +0x17a
main.(_clientConn).serve(0x201c6ba0, 0x201818b8)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:360 +0x7e2
created by main.(*Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

goroutine 652 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x202d88d0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x202d2e70, 0x2025e000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x200b0dc8, 0x2025e000, 0x1000, 0x1000, 0x9ac, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyClient2Server(0x20283be0, 0x2029e740, 0x2027c1e0, 0x2029e680, 0x2029e6c0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:964 +0x5bb
main._func_008(0x200b0e38, 0x200b0e28, 0x200b0a48, 0x200b0e20, 0x200b0e48, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1024 +0x52
created by main.(_serverConn).doConnect
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1026 +0x2a7

goroutine 655 [chan receive]:
net.(_ioSrv).ExecIO(0x201b7e28, 0x201c6700, 0x20132510, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x201b27e0, 0x2015c000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x20131d50, 0x2015c000, 0x1000, 0x1000, 0x614, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyServer2Client(0x2017b200, 0x20280700, 0x2027c050, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:847 +0xb9
main.(_serverConn).doConnect(0x2017b200, 0x2027c050, 0x20280700, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1029 +0x2cb
main.(_clientConn).serve(0x20280700, 0x200b0908)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:348 +0x6d5
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x412

D:\bin>pause
请按任意键继续. . .

仅对私有 IP 总是直连

COW 0.6.3 rc.txt 配置如下:
listen = 127.0.0.1:7777
alwaysProxy = false
loadBalance = backup
#8087 goagent
#10000 apjp
#7070 ssh
#1080 shadowsocks

httpParent = 127.0.0.1:8087
httpParent = 127.0.0.1:10000
socksParent = 127.0.0.1:7070
socksParent = 127.0.0.1:1080
dialTimeout = 3s
readTimeout = 4s

addrInPAC = 127.0.0.1:7777

虽然 cow 内置了 shadowsocks 支持,为了便于shadowsocks-local.exe进程限速,而不是shadowsocks流量包含在cow.exe进程内,所以另外使用shadowsocks-go开启shadowsocks代理。


指定多个二级代理时使用的负载均衡策略,可选策略如下
backup: 默认策略,优先使用第一个指定的二级代理,其他仅作备份使用
hash: 根据请求的 host name,优先使用 hash 到的某一个二级代理
一个二级代理连接失败后会依次尝试其他二级代理
失败的二级代理会以一定的概率再次尝试使用,因此恢复后会重新启用
loadBalance = backup

问题:
1

addrInPAC = 127.0.0.1:7777 与 addrInPAC = 127.0.0.1:7777 一样,cow-taskbar窗口显示PAC都照样添加。

2
8087 goagent 不稳定,有时出现403、500错误,但过几分钟后就正常,但是cow几天后都没有尝试使用。
“失败的二级代理会以一定的概率再次尝试使用,因此恢复后会重新启用”
不知道此处的概率计算怎么设置的,只能每行用#屏蔽其他三个代理,cow才使用8087 goagent。
建议在rc.txt中可以设置成cow重新载入或重新启动后,就能从头开始依次尝试使用各个二级代理,包括失败的二级代理。

有时候并不是某个二级代理本身有问题,是我没有启动它或上网所用网络不稳定,cow可能就认为这个二级代理失败不再使用它。

3
httpParent = 127.0.0.1:8087
httpParent = 127.0.0.1:10000
socksParent = 127.0.0.1:7070
socksParent = 127.0.0.1:1080
使用一段时间后,修改为
socksParent = 127.0.0.1:1080
httpParent = 127.0.0.1:8087
httpParent = 127.0.0.1:10000
socksParent = 127.0.0.1:7070
无效。
依然按照先前的顺序加载二级代理,8087、10000、7070二级代理如果没打开,尽管1080 shadowsocks打开了且有效,也排在第一位
但cow此时却跳过第一位的1080 shadowsocks,依次尝试到7070二级代理就宣告失败了。
要说cow对rc.txt有缓存也不对,因为每行用#屏蔽却可以生效。

4
对于直接用ip地址访问的网站一直是Using direct connection. 造成自动翻墙失败。

希望改进cow,感谢作者编写功能强大实用的二级代理调度和直接内置支持shadowsocks登陆的软件!

可能有内存泄漏?

在1G 内存的linux机器运行,运行前内存有900MB 左右,运行4个小时后程序崩溃,报错:fatal error: runtime: out of memory。
客户端连接大概有20来个

Handle "Redirect" blocking policy

Some networks, e.g. a typical company intranet, will block connections by applying "redirect" policy. They often redirect blocked connections to a warning page or a login page. It means there could exist no reset or timeout for blocked sites. In some situations, we can even get HTTP 200 code when trying to reach a non-existent site.

Furthermore, some DNS pollution/injection techniques enable ISPs to do almost the same things for advisement. An example is that China telecom redirects users to 114 search when they are trying to visit a non-existent or blocked site.

LICENSE

Please specify a license

Thanks for your work BTW

Retry request for HTTP CONNECT

Currently working on.

Plan: buffer content from the client. If no response has ever been read from the server, and connection is reset (or timeout?), use socks proxy and re-send buffered content upon connection.

可不可以加入对goagent的支持

对cow的自动路由比较欣赏,goagent的速度非常可观但使用的是手动路由,如果cow能直接支持goagent就可以不用开好几个客户端了

[Windows] unhandled error: GetAddrInfoW

不好意思我又发现了新问题,依旧PC上运行cow,Android手机设置代理,在Android上试图打开Ingress,结果进不去,然后一看出现了很多这个错误
m-dot-betaspike.appspot.com这个域名被墙了,但是貌似没检测出来,估计和之前那个问题类似的原因

[ERROR] 2013/05/24 13:39:10 direct connection for CONNECT m-dot-betaspike.appspo
t.com:443 failed, unhandled error: GetAddrInfoW: The requested name is valid, bu
t no data of the requested type was found.
[ERROR] 2013/05/24 13:39:10 direct connection for CONNECT m-dot-betaspike.appspo
t.com:443 failed, unhandled error: GetAddrInfoW: The requested name is valid, bu
t no data of the requested type was found.
[ERROR] 2013/05/24 13:39:10 direct connection for CONNECT m-dot-betaspike.appspo
t.com:443 failed, unhandled error: GetAddrInfoW: The requested name is valid, bu
t no data of the requested type was found.
[ERROR] 2013/05/24 13:39:10 direct connection for CONNECT m-dot-betaspike.appspo
t.com:443 failed, unhandled error: GetAddrInfoW: The requested name is valid, bu
t no data of the requested type was found.
[ERROR] 2013/05/24 13:39:11 direct connection for CONNECT m-dot-betaspike.appspo
t.com:443 failed, unhandled error: GetAddrInfoW: The requested name is valid, bu
t no data of the requested type was found.
[ERROR] 2013/05/24 13:39:11 direct connection for CONNECT m-dot-betaspike.appspo
t.com:443 failed, unhandled error: GetAddrInfoW: The requested name is valid, bu
t no data of the requested type was found.

Windows 平台下的 Crash

Win32 平台,Go1.0.3,commit 为 a34fb43

崩溃日志:
[ERROR] 2013/03/08 12:46:38 Can't connect to socks server dial tcp 127.0.0.1:7022: No connection could be made because t
he target machine actively refused it. for client23.dropbox.com:443
[ERROR] 2013/03/08 12:46:39 Can't connect to http parent proxy for client23.dropbox.com:443: dial tcp 127.0.0.1:8087: No
connection could be made because the target machine actively refused it.
[DEBUG] 2013/03/08 12:46:39 Client 127.0.0.1:9106 connection closed
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x48be8b]

goroutine 2770 [running]:
github.com/cyfdecyf/bufio.(_Reader).ReadSlice(0x0, 0x20199c0a, 0x0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:291 +0x48
main.parseRequest(0x20199c00, 0x201447d0, 0x0, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/http.go:426 +0xa0
main.(_clientConn).getRequest(0x20199c00, 0x201447d0, 0x0, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:221 +0x38
main.(_clientConn).serve(0x20199c00, 0x200b0d88)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:298 +0x9f
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:180 +0x412

goroutine 1 [chan receive]:
net.(_ioSrv).ExecIO(0x2019b9b0, 0x201aca40, 0x202b2120, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).accept(0x200fcd20, 0x451655, 0x0, [DEBUG] 2013/03/08 12:46:39 New Client: 127.0.0.1:9115
0x2[DEBUG] 2013/03/08 12:46:39 client ip 127.0.0.1 allowed
)
D:/go/go/src/pkg/net/fd_windows.go:547 +0x2a4
net.(_TCPListener).AcceptTCP(0x2019b9d0, 0x2000, 0x0, 0x0)
D:/go/go/src/pkg/net/tcpsock_posix.go:320 +0x55
net.(_TCPListener).Accept(0x2019b9d0, 0x0, 0x0, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:330 +0x38
main.(*Proxy).Serve(0x201ac900, 0x200e7bc0, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:171 +0x253
main.main()
D:/go/home/src/github.com/cyfdecyf/cow/main.go:87 +0x2a9

goroutine 2 [syscall]:
created by runtime.main
D:/go/go/src/pkg/runtime/proc.c:221

goroutine 3 [syscall]:
os/signal.loop()
D:/go/go/src/pkg/os/signal/signal_unix.go:20 +0x1e
created by os/signal.init路1
D:/go/go/src/pkg/os/signal/signal_unix.go:26 +0x31

goroutine 4 [sleep]:
time.Sleep(0x30b8a000, 0x346)
D:/go/go/src/pkg/runtime/ztime_386.c:21 +0x50
main._func_010()
D:/go/home/src/github.com/cyfdecyf/cow/sitestat.go:383 +0x2d
created by main.initSiteStat
D:/go/home/src/github.com/cyfdecyf/cow/sitestat.go:386 +0x67

goroutine 5 [sleep]:
time.Sleep(0xb2c97000, 0x8b)
D:/go/go/src/pkg/runtime/ztime_386.c:21 +0x50
main._func_001(0x2019b988, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/pac.go:142 +0x30
created by main.initPAC
D:/go/home/src/github.com/cyfdecyf/cow/pac.go:146 +0xa4

goroutine 6 [chan receive]:
main.sigHandler()
D:/go/home/src/github.com/cyfdecyf/cow/main.go:21 +0x115
created by main.main
D:/go/home/src/github.com/cyfdecyf/cow/main.go:76 +0x12a

goroutine 10 [syscall]:
syscall.Syscall6(0x750b4e90, 0x5, 0xf0, 0x201b2400, 0x2019bb08, ...)
D:/go/go/src/pkg/runtime/zsyscall_windows_386.c:97 +0x49
syscall.GetQueuedCompletionStatus(0xf0, 0x201b2400, 0x2019bb08, 0x2019bb00, 0xffffffff, ...)
D:/go/go/src/pkg/syscall/zsyscall_windows_386.go:500 +0x76
net.(*resultSrv).Run(0x2019b9a8, 0x4292b4)
D:/go/go/src/pkg/net/fd_windows.go:107 +0x86
created by net.startServer
D:/go/go/src/pkg/net/fd_windows.go:211 +0xfc

goroutine 8 [sleep]:
time.Sleep(0xf8475800, 0xd)
D:/go/go/src/pkg/runtime/ztime_386.c:21 +0x50
main.runEstimateTimeout()
D:/go/home/src/github.com/cyfdecyf/cow/estimate_timeout.go:95 +0x6c
created by main.main
D:/go/home/src/github.com/cyfdecyf/cow/main.go:78 +0x146

goroutine 9 [syscall]:
created by addtimer
D:/go/go/src/pkg/runtime/ztime_386.c:72

goroutine 11 [select]:
net.(*ioSrv).ProcessRemoteIO(0x2019b9b0, 0x0)
D:/go/go/src/pkg/net/fd_windows.go:138 +0x183
created by net.startServer
D:/go/go/src/pkg/net/fd_windows.go:216 +0x17c

goroutine 19 [finalizer wait]:
created by runtime.gc
D:/go/go/src/pkg/runtime/mgc0.c:882

goroutine 2697 [chan receive]:
net.(_ioSrv).ExecIO(0x2019b9b0, 0x201acd60, 0x201b7750, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x201584d0, 0x20307000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x200f2700, 0x20307000, 0x1000, 0x1000, 0xca, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyClient2Server(0x2021ad40, 0x2048e8c0, 0x20144aa0, 0x2048e980, 0x2048e940, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:937 +0x4fc
main._func_008(0x200f2048, 0x200f2d28, 0x200f26f8, 0x200f2d30, 0x200f2038, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:999 +0x52
created by main.(_serverConn).doConnect
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1001 +0x2c2

goroutine 2695 [chan receive]:
net.(_ioSrv).ExecIO(0x2019b9b0, 0x201acd60, 0x20499030, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x20158540, 0x20323000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x200f2788, 0x20323000, 0x1000, 0x1000, 0x25, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyServer2Client(0x2048e8c0, 0x2021ad40, 0x20144aa0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:823 +0xb9
main.(_serverConn).doConnect(0x2048e8c0, 0x20144aa0, 0x2021ad40, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1004 +0x2e6
main.(_clientConn).serve(0x2021ad40, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:347 +0x5af
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:180 +0x412

goroutine 1576 [chan receive]:
main.(_serverConn).doConnect(0x20359b00, 0x201dba50, 0x201acb00, 0x201b69a0, 0x200b0f90, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1007 +0x352
main.(_clientConn).serve(0x201acb00, 0x20176a90)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:347 +0x5af
created by main.(*Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:180 +0x412

goroutine 2773 [select]:
net.(_ioSrv).ExecIO(0x2019b9b0, 0x201acd60, 0x204790c0, 0xe235bc54, 0x12e958cd, ...)
D:/go/go/src/pkg/net/fd_windows.go:180 +0x46c
net.(_netFD).Read(0x203d6460, 0x2013f000, 0x2000, 0x2000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x201765b0, 0x2013f000, 0x2000, 0x2000, 0x0, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
github.com/cyfdecyf/bufio.(_Reader).fill(0x2019de10, 0x0)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:95 +0x114
github.com/cyfdecyf/bufio.(_Reader).ReadSlice(0x2019de10, 0x2029be0a, 0x0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/bufio/bufio.go:306 +0x1f2
main.parseRequest(0x2029be80, 0x20144b90, 0x0, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/http.go:426 +0xa0
main.(_clientConn).getRequest(0x2029be80, 0x20144b90, 0x0, 0x0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:221 +0x38
main.(_clientConn).serve(0x2029be80, 0x201761b8)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:298 +0x9f
created by main.(_Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:180 +0x412

goroutine 1578 [chan receive]:
net.(_ioSrv).ExecIO(0x2019b9b0, 0x201acd60, 0x2025f810, 0x0, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:191 +0x4b4
net.(_netFD).Read(0x2034bbd0, 0x20242000, 0x1000, 0x1000, 0x0, ...)
D:/go/go/src/pkg/net/fd_windows.go:385 +0x1c6
net.(_TCPConn).Read(0x2017efa0, 0x20242000, 0x1000, 0x1000, 0x2ad, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:87 +0xb0
main.copyClient2Server(0x201acb00, 0x20359b00, 0x201dba50, 0x201c9000, 0x201c9680, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:937 +0x4fc
main._func_008(0x2017ec20, 0x2017ec10, 0x2017ef68, 0x2017ed20, 0x2017ec38, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:999 +0x52
created by main.(_serverConn).doConnect
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:1001 +0x2c2

goroutine 2775 [select]:
net.DialTimeout(0x52bc6c, 0x3, 0x201acee0, 0x18, 0x2a05f200, ...)
D:/go/go/src/pkg/net/dial.go:143 +0x302
main.createctDirectConnection(0x2019d600, 0x2019d660, 0x77cfb200, 0x200f83a0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:574 +0x95
main.(_clientConn).createConnection(0x201994a0, 0x20144730, 0x2019d660, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:650 +0x366
main.(_clientConn).createServerConn(0x201994a0, 0x20144730, 0x201acee0, 0x18)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:685 +0x57
main.(_clientConn).getServerConn(0x201994a0, 0x20144730, 0x0, 0x0, 0x0, ...)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:559 +0xaf
main.(_clientConn).serve(0x201994a0, 0x201766d0)
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:337 +0x51a
created by main.(*Proxy).Serve
D:/go/home/src/github.com/cyfdecyf/cow/proxy.go:180 +0x412

goroutine 2776 [syscall]:
syscall.Syscall(0x74ef6bdd, 0x3, 0x32c, 0x201acfe8, 0x10, ...)
D:/go/go/src/pkg/runtime/zsyscall_windows_386.c:74 +0x49
syscall.connect(0x32c, 0x201acfe8, 0x10, 0x0, 0x0, ...)
D:/go/go/src/pkg/syscall/zsyscall_windows_386.go:1263 +0x5e
syscall.Connect(0x32c, 0x201ac980, 0x201acfe0, 0x0, 0x0, ...)
D:/go/go/src/pkg/syscall/syscall_windows.go:643 +0x74
net.(*netFD).connect(0x203d60e0, 0x201ac980, 0x201acfe0, 0x52bc6c, 0x3, ...)
D:/go/go/src/pkg/net/fd_windows.go:273 +0x38
net.socket(0x52bc6c, 0x3, 0x2, 0x1, 0x0, ...)
D:/go/go/src/pkg/net/sock.go:56 +0x2ed
net.internetSocket(0x52bc6c, 0x3, 0x0, 0x0, 0x2019d870, ...)
D:/go/go/src/pkg/net/ipsock_posix.go:138 +0x25a
net.DialTCP(0x52bc6c, 0x3, 0x0, 0x200edf30, 0x200edf01, ...)
D:/go/go/src/pkg/net/tcpsock_posix.go:241 +0x13d
net.dialAddr(0x52bc6c, 0x3, 0x201acee0, 0x18, 0x201ac940, ...)
D:/go/go/src/pkg/net/dial.go:102 +0x14c
net._func_001(0x20176fd8, 0x20176fe0, 0x20176fe8, 0x20176ff0, 0x0, ...)
D:/go/go/src/pkg/net/dial.go:140 +0xfc
created by net.DialTimeout
D:/go/go/src/pkg/net/dial.go:142 +0x13a

树莓派安装脚本会报错

pi@raspberrypi ~/mygo/bin $ uname -m
armv6l

直接使用Linux的会报错,不过我自己编译了一个,可以运行,可以打包发给你。

Unhandled server read error on Windows

用的0.6.2,没用过之前版本
我在win8上用cow监听0.0.0.0:7777,然后用android手机连接wifi,手动设置代理为192.168.1.6:7777,可以正常使用,但是经常出现这个ERROR

2013/05/17 19:35:25 COW proxy address 0.0.0.0:7777, PAC url http://<hostip>:7777
/pac
[ERROR] 2013/05/17 19:36:36 Unhandled server read error: WSASend tcp 192.168.1.6
:7777: An established connection was aborted by the software in your host machin
e. GET lh5.ggpht.com:80/QZmCC09p__4PwbttCw51n62J-BMljRxQWPhJtgUofH3zBCvh4D6aEslK
C7y1wBfCGoad=w136-h136
[ERROR] 2013/05/17 19:37:42 Unhandled server read error: WSASend tcp 192.168.1.6
:7777: An established connection was aborted by the software in your host machin
e. GET producer.googleusercontent.com:80/producer/attachment/CAAqBwgKMJ6nnQIwp6E
i-OPSimagespagespg-01.jpg?fife=w218-h314
2013/05/17 19:40:57 new read timeout: 5.224562s
2013/05/17 19:41:27 new read timeout: 5s
[ERROR] 2013/05/17 19:42:55 Unhandled server read error: WSASend tcp 192.168.1.6
:7777: An established connection was aborted by the software in your host machin
e. GET lh4.ggpht.com:80/lvD0XYlNlBzk2pcVakr_AqlajLI4nGpSltYOTrOJ5uiuxG37IOZ5QlXQ
2Sv1qCyNfhQ=h360
[ERROR] 2013/05/17 19:52:48 Unhandled server read error: WSASend tcp 192.168.1.6
:7777: An existing connection was forcibly closed by the remote host. GET weathe
r.yahooapis.com:80/forecastrss?w=2127866&u=c
[ERROR] 2013/05/17 19:54:23 Unhandled server read error: WSASend tcp 192.168.1.6
:7777: An established connection was aborted by the software in your host machin
e. GET lh6.ggpht.com:80/clVMCWYIHYn2p5CisHJTWkt43sWj36FX4usz9FcvYZtItjovL0KspGjU
8W5YgUjoBCUH=h298

出错后无法打开url

Chrome for Mac
Shadowsocks

log显示类似这样的emote twitter.com:443 error: Error: This socket is closed. 然后这个url就再也打不开了 除非重启chrome或者重启cow

在 Raspberry Pi 下崩溃 ( Raspbian )

出错如下:.
SIGILL: illegal instruction
PC=0x66d28
....
math.init·1()
/go/gosrc/pkg/math/pow10.go:34 +0x28
math.init()
/go/src/pkg/math/unsafe.go:21 +0x70
strconv.init()
/go/src/pkg/strconv/quote.go:441 +0x70
os/exec.init()
/go/src/pkg/os/exec/lp_unix.go:56 +0x78
main.init()
/go/src/pkg/github.com/cyfdecyf/cow/util.go:473 +0x7c
....
goroutine 2 [runnable]:
created by runtime.main
/go/src/pkg/runtime/proc.c:221
....
trap 0x6
error 0x0
oldmask 0x0
r0 0x67d770
r1 0x0
r2 0x0
r3 0x0
r4 0x0
r5 0x0
r6 0x0
r7 0x0
r8 0x107349f8
r9 0x26f9c4
r10 0x1073c000
fp 0x67d378
ip 0x107349f5
sp 0x40190ecc
lr 0x672bc
pc 0x66d28
cpsr 0x20000010
fault 0x0

但单独运行 go 是正常的

没有 ~/.cow 文件夹?

按着流程走,安装 Go Installer for Mac 1.0.3 之后,用 sudo go get github.com/cyfdecyf/cow 来安装 COW,然后没有 ~/.cow 文件夹?下载好的原文件都放在 /usr/local/go/src/pkg/github 里面了。如果不用 sudo 的话,就会 permission denied。

Cannot build under freebsd 9.1 (x64)

Try to build with 'go get github.com/cyfdecyf/cow', get the following error:


[root@~ freebsd]# go get github.com/cyfdecyf/cow
# github.com/cyfdecyf/cow
/usr/local/go/src/pkg/github.com/cyfdecyf/cow/shadowsocks.go:12: undefined: shadowsocks.EncryptTable
/usr/local/go/src/pkg/github.com/cyfdecyf/cow/shadowsocks.go:18: undefined: shadowsocks.GetTable

Go is built from ports (lang/go).

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.