亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

100行PHP代碼實現socks5代理服務器

2020-03-22 17:40:30
字體:
來源:轉載
供稿:網友
前兩天在B站上看到一個小伙紙100元組裝個電腦打LOL畫質流暢,突發奇想100行代碼能(簡單)實現個啥好玩的。我主要是做php開發的,于是就有了本文。當然,由于php(不算swoole擴展)本身不擅長做網絡服務端編程,所以這個代理,只是個玩具,離日常使用有點距離。如果想使用穩定可靠的加密(所以能禾斗學上網)代理,可以用這個:http://github.com/momaer/asocks-go也是100來行代碼使用go實現。寫的過程中發現php多線程還是難的。比如我開始想每個連接新建一個線程。但這個線程得保存起來(比如保存到數組),比如官方例子中的這個:http://github.com/krakjoe/pthreads/blob/master/examples/SocketServer.php要放到$clients這個數組里,不然,你試試(curl -L一個要301的地址)就知道出現什么情況了。這個例子說了in the real world, do something here to ensure clients not running are destroyed 但是,如何把不再運行的連接銷毀卻沒有講。恩。我試了把$clients放到一個類里,把類傳給線程類,然后在線程類要結束時把$clients里對應的連接給unset掉,無果。那,以下就是使用線程池來實現的代理,按道理講,退出時池要shutdown(),監聽socket也要shutdown的,但百行代碼,就不勉強了,隨著ctrl + c,就讓操作系統來回收資源吧。php不擅長網絡編程體現在哪里呢?首先我用的是stream_socket_XXX相關的函數,為啥不用socket擴展呢?因為socket擴展有問題,參見:http://github.com/krakjoe/pthreads/issues/581而stream_set_timeout對stream_socket_recvfrom這些高級操作,不起作用,參見:http://php.net/manual/en/function.stream-set-timeout.php而這些,在寫代理時都需要考慮的。比如連接遠程目標服務器時,沒有超時控制,很容易就線程池跑滿了。測試的話,使用curl即可,對了,目前只支持遠程dns解析,為啥呢?因為這個玩具后期可是要實現禾斗學上網的喲: curl --socks5-hostname 127.0.0.1:1080http://ip.cnClass Pipe extends Threaded private $client; private $remote; html' target='_blank'>public function __construct($client, $remote) $this- client = $client; $this- remote = $remote; public function run() for ( ; ; ) { $data = stream_socket_recvfrom($this- client, 4096); if ($data === false || strlen($data) === 0) { break; $sendBytes = stream_socket_sendto($this- remote, $data); if ($sendBytes = 0) { break; stream_socket_shutdown($this- client, STREAM_SHUT_RD); stream_socket_shutdown($this- remote, STREAM_SHUT_WR);Class Client extends Threaded public $fd; public function __construct($fd) $this- fd = $fd; public function run() $data = stream_socket_recvfrom($this- fd, 2); $data = unpack('c*', $data); if ($data[1] !== 0x05) { stream_socket_shutdown($this- fd, STREAM_SHUT_RDWR); echo '協議不正確.', PHP_EOL; return; $nmethods = $data[2]; $data = stream_socket_recvfrom($this- fd, $nmethods); stream_socket_sendto($this- fd, "/x05/x00"); $data = stream_socket_recvfrom($this- fd, 4); $data = unpack('c*', $data); $addressType = $data[4]; if ($addressType === 0x03) { // domain $domainLength = unpack('c', stream_socket_recvfrom($this- fd, 1))[1]; $data = stream_socket_recvfrom($this- fd, $domainLength + 2); $domain = substr($data, 0, $domainLength); $port = unpack("n", substr($data, -2))[1]; } else { stream_socket_shutdown($this- fd, STREAM_SHUT_RDWR); echo '請使用遠程dns解析.', PHP_EOL; stream_socket_sendto($this- fd, "/x05/x00/x00/x01/x00/x00/x00/x00/x00/x00"); echo "{$domain}:{$port}", PHP_EOL; $remote = stream_socket_client("tcp://{$domain}:{$port}"); if ($remote === false) { stream_socket_shutdown($this- fd, STREAM_SHUT_RDWR); return; $pool = $this- worker- pipePool; $pipe1 = new Pipe($remote, $this- $pipe2 = new Pipe($this- fd, $remote); $pool- submit($pipe1); $pool- submit($pipe2);class ProxyWorker extends Worker public $pipePool; public function __construct($pipePool) $this- pipePool = $pipePool;$server = stream_socket_server('tcp://0.0.0.0:1080', $errno, $errstr);if ($server === false) exit($errstr);$pipePool = new Pool(200, Worker::class);$pool = new Pool(50, 'ProxyWorker', [$pipePool]);for( ; ; ) { $fd = @stream_socket_accept($server, 60); if ($fd === false) continue; $pool- submit(new Client($fd));}PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品久久久久久牛牛| 国产精品久久综合av爱欲tv| 国产97在线观看| 亚洲欧美国产精品久久久久久久| 日韩av电影手机在线| 中文字幕日韩欧美在线| 韩国三级日本三级少妇99| 一本大道久久加勒比香蕉| 亚洲精品综合精品自拍| 菠萝蜜影院一区二区免费| 成人欧美在线观看| 亚洲国产成人在线播放| 色多多国产成人永久免费网站| 中文在线不卡视频| 日韩精品中文字幕有码专区| 日韩精品中文字| 欧美性猛交xxxx久久久| 亚洲精品动漫100p| 欧美成人午夜激情在线| 久久久亚洲影院你懂的| 亚洲精品在线看| 亚洲人成绝费网站色www| 欧美成人精品一区| 精品视频中文字幕| 欧美成人高清视频| 日韩成人在线视频观看| www.亚洲成人| 久久久久久高潮国产精品视| 欧美激情综合色| 国产精品久久97| 亚洲九九九在线观看| 欧美一区二区三区……| 国产精品尤物福利片在线观看| 国产精品国产三级国产aⅴ9色| 久久久久中文字幕2018| 日韩激情视频在线播放| 久久久之久亚州精品露出| 欧美日韩在线影院| 国产美女高潮久久白浆| 中文字幕日本欧美| 欧美一级电影免费在线观看| 91爱爱小视频k| 日韩国产高清污视频在线观看| 亚洲国产高潮在线观看| 久久五月情影视| 91极品视频在线| 国产亚洲视频中文字幕视频| 欧美日韩亚洲高清| 亚洲天堂精品在线| 亚洲欧美激情四射在线日| 97视频在线观看播放| 日韩成人激情在线| 欧美俄罗斯乱妇| 17婷婷久久www| 国产精品你懂得| 久久人人爽人人爽爽久久| 欧美激情在线有限公司| 亚洲精品福利资源站| 国产欧美日韩最新| 18一19gay欧美视频网站| 色www亚洲国产张柏芝| 亚洲韩国欧洲国产日产av| 欧美日韩在线视频观看| 性金发美女69hd大尺寸| 91久久精品国产91性色| 国产一区二区三区欧美| 欧美日韩亚洲激情| 国产精品视频午夜| 欧美成人三级视频网站| 亚洲欧洲一区二区三区在线观看| 亚洲欧美在线免费观看| 欧美日韩国产在线| 91精品国产综合久久香蕉922| yw.139尤物在线精品视频| 国产精品成人av在线| 亚洲免费视频在线观看| 亚洲老头老太hd| 高清日韩电视剧大全免费播放在线观看| 欧美性猛交xxxx富婆弯腰| 欧美一区视频在线| 欧美性黄网官网| 国产精品综合久久久| 精品亚洲精品福利线在观看| 国产精品黄色av| 91精品国产色综合久久不卡98| 久久综合五月天| 正在播放欧美一区| 日本不卡视频在线播放| 久久久久久久久久久成人| 国产精品久久久久久久久久尿| 精品亚洲男同gayvideo网站| 亚洲午夜av电影| 不卡av在线播放| 国产精品福利无圣光在线一区| 欧美高清在线视频观看不卡| 亚洲精品日韩欧美| 成人97在线观看视频| 久久久久久久一区二区三区| 国产日韩精品视频| 久精品免费视频| 这里精品视频免费| 精品视频—区二区三区免费| 国产精品福利久久久| 国产精品video| 色777狠狠综合秋免鲁丝| 亚洲精品一二区| 亚洲精选一区二区| 亚洲男女自偷自拍图片另类| 国产精品爽黄69| 欧美在线视频播放| 日韩中文字幕免费| 亚洲欧美日韩网| 色妞在线综合亚洲欧美| 久久久久久久国产精品视频| 久热国产精品视频| 国产主播喷水一区二区| 国内精品在线一区| 亚洲精品wwwww| 97视频免费观看| 国产精品∨欧美精品v日韩精品| 国产视频精品一区二区三区| 日本精品视频在线观看| 中文字幕免费精品一区高清| 精品成人在线视频| 精品久久久999| 欧美放荡办公室videos4k| 欧美日韩激情视频8区| 91热福利电影| 国产精品亚洲激情| 91a在线视频| 欧美日韩性视频| 国产91精品不卡视频| 亚洲高清不卡av| 91色视频在线导航| 日韩av成人在线| 日本国产欧美一区二区三区| 欧美黄色小视频| 国产成人在线亚洲欧美| 爱福利视频一区| 久久久久久久影视| 亚洲激情国产精品| 日韩禁在线播放| 日韩美女激情视频| 夜夜嗨av色综合久久久综合网| 91亚洲精华国产精华| 亚洲在线免费观看| 岛国精品视频在线播放| 九九精品视频在线| 国产午夜精品久久久| 亚洲3p在线观看| 亚洲精品资源美女情侣酒店| 热99精品只有里视频精品| 成人在线视频网| 亚洲美女精品成人在线视频| 欧美多人爱爱视频网站| 精品久久久香蕉免费精品视频| 国产丝袜一区二区三区免费视频| 午夜精品一区二区三区在线视频| 日韩在线视频免费观看高清中文| 色哟哟亚洲精品一区二区| 91国内精品久久| 亚洲深夜福利网站| 国产中文字幕日韩| 欧美壮男野外gaytube|