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); } } }
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); } }
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); } }
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); } } }