public async Task OnRequest(object sender, SessionEventArgs e)
        {
            if (e.WebSession.Request.Url.Contains("music.163.com/eapi/song/enhance") || e.WebSession.Request.Url.Contains("music.163.com/eapi/song/like"))
            {
                Console.WriteLine("从代理服务器获取:" + e.WebSession.Request.Url);
                var proxy = proxySelector.GetTop();
                var st    = new Stopwatch();
                st.Start();
                try
                {
                    byte[] ret = null;
                    using (var wc = new ImpatientWebClient())
                    {
                        wc.Proxy = new WebProxy(proxy.host, proxy.port);
                        foreach (var aheader in e.WebSession.Request.RequestHeaders)
                        {
                            var str = aheader.Name.ToLower();
                            if (str == "host" || str == "content-length" || str == "accept" || str == "user-agent" || str == "connection")
                            {
                                continue;
                            }
                            wc.Headers.Add(aheader.Name, aheader.Value);
                        }
                        ret = wc.UploadData(e.WebSession.Request.Url.Replace("https://", "http://"), await e.GetRequestBody());
                    }
                    st.Stop();
                    await e.Ok(ret);

                    Console.WriteLine("修改完成,用时 " + st.ElapsedMilliseconds + " ms");
                }
                catch (Exception ex) { Console.WriteLine(ex); }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
start:
            Console.OutputEncoding = Encoding.UTF8;
            var ps = new ProxySelector();

            while (!UpdateProxySelector(ps))
            {
                Console.WriteLine("Failed retriving proxy list");
                Console.ReadLine();
            }
            var proxy = new NeteaseProxy(ps);

            proxy.Start();
            Console.WriteLine("Please change proxy of Netease Music to address 127.0.0.1,port 15213");
            Console.WriteLine("Press enter to use the next proxy");
            while (true)
            {
                var aproxy = ps.GetTop();
                if (aproxy == null)
                {
                    Console.WriteLine("No available proxy, retrying");
                    proxy.Stop();
                    goto start;
                }
                Console.WriteLine("Using: " + aproxy);
                Console.ReadLine();
                ps.Remove(aproxy);
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
start:
            var ps = new ProxySelector();

            if (!UpdateProxySelector(ps))
            {
                Console.WriteLine("获取代理列表失败");
                Console.ReadLine();
                return;
            }
            var proxy = new NeteaseProxy(ps);

            proxy.Start();
            Console.WriteLine("请设置网易云音乐代理为127.0.0.1,端口15213");
            Console.WriteLine("如果播放失败,按回车切换到下一个代理服务器");
            while (true)
            {
                var aproxy = ps.GetTop();
                if (aproxy == null)
                {
                    Console.WriteLine("没有可用代理,重新搜索");
                    proxy.Stop();
                    goto start;
                }
                Console.WriteLine("现在使用的是:" + aproxy);
                Console.ReadLine();
                ps.Remove(aproxy);
            }
        }
Пример #4
0
 public async Task OnRequest(object sender, SessionEventArgs e)
 {
     if (proxiedAddresses.Any(str => e.WebSession.Request.Url.Contains(str)))
     {
         Console.WriteLine("从代理服务器获取:" + e.WebSession.Request.Url);
         var proxy = proxySelector.GetTop();
         var st    = new Stopwatch();
         st.Start();
         try
         {
             using (var wc = new ImpatientWebClient())
             {
                 wc.Proxy = new WebProxy(proxy.host, proxy.port);
                 foreach (var aheader in e.WebSession.Request.RequestHeaders)
                 {
                     var str = aheader.Name.ToLower();
                     if (skipRequestHeaders.Contains(str))
                     {
                         continue;
                     }
                     wc.Headers.Add(aheader.Name, aheader.Value);
                 }
                 var body    = wc.UploadData(e.WebSession.Request.Url, await e.GetRequestBody());
                 var headers = new Dictionary <string, HttpHeader>();
                 foreach (var key in wc.ResponseHeaders.AllKeys)
                 {
                     headers.Add(key, new HttpHeader(key, wc.ResponseHeaders[key]));
                 }
                 await e.Ok(body, headers);
             }
             st.Stop();
             Console.WriteLine("修改完成,用时 " + st.ElapsedMilliseconds + " ms");
         }
         catch (Exception ex) { Console.WriteLine(ex); }
     }
 }