【问题标题】:Trying titanium web proxy solution尝试钛网络代理解决方案
【发布时间】:2020-10-05 12:28:36
【问题描述】:

我们安装了 nuget Titan Web 代理,创建了一个窗口服务并启动了 Titan Web 代理。 Windows 服务的工作、运行以及启动和停止时间被写入日志文件。但是当我用不同的浏览器打开一些页面时,网络代理应该捕捉互联网请求并提供它们,尽管没有发生此类事件并且没有记录任何内容。 这是我们的代码:

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using Titanium.Web.Proxy;
using Titanium.Web.Proxy.EventArguments;

namespace WebProxy1 {
    public partial class MyNewService : ServiceBase {
        public ProxyServer proxyServer;

        public MyNewService() {
            InitializeComponent();
        }

        protected override void OnStart(string[] args) {
            proxyServer = new ProxyServer(true, true, true);

            proxyServer.BeforeRequest += OnRequest;

            proxyServer.Start();

            WriteToFile("Service is started at " + DateTime.Now);

        }

        protected override void OnStop() {
            proxyServer.Stop();
            WriteToFile("Service is stopped at " + DateTime.Now);
        }
        public void WriteToFile(string Message) {
            string path = "E:\\Downloads\\Logs";
            if (!Directory.Exists(path)) {
                Directory.CreateDirectory(path);
            }
            string filepath = "E:\\Downloads\\Logs\\ServiceLog_" + DateTime.Now.Date.ToShortDateString().Replace('/', '_') + ".txt";
            if (!File.Exists(filepath)) {
                // Create a file to write to.   
                using (StreamWriter sw = File.CreateText(filepath)) {
                    sw.WriteLine(Message);
                }
            } else {
                using (StreamWriter sw = File.AppendText(filepath)) {
                    sw.WriteLine(Message);
                }
            }
        }

        public async Task OnRequest(object sender, SessionEventArgs e) {
            WriteToFile(e.HttpClient.Request.Url);

            // To cancel a request with a custom HTML content
            // Filter URL
            if (e.HttpClient.Request.Method.ToUpper() == "GET" && e.HttpClient.Request.RequestUri.AbsoluteUri.Contains("google.com")) {
                e.Ok("<!DOCTYPE html>" +
                    "<html><body><h1>" +
                    "Website Blocked" +
                    "</h1>" +
                    "<p>Blocked by titanium web proxy.</p>" +
                    "</body>" +
                    "</html>");
            }

            // Redirect example
            if (e.HttpClient.Request.RequestUri.AbsoluteUri.Contains("wikipedia.org")) {
                e.Redirect("https://www.paypal.com");
            }
        }
    }
}

【问题讨论】:

    标签: c# titanium-web-proxy


    【解决方案1】:

    我认为你没有正确设置钛代理。

    在启动代理之前,你必须设置端点。

    有钛代理使用示例here

    这是我的示例源代码。

    var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 8000, true)
    {
        // Use self-issued generic certificate on all https requests
        // Optimizes performance by not creating a certificate for each https-enabled domain
        // Useful when certificate trust is not required by proxy clients
       //GenericCertificate = new X509Certificate2(Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "genericcert.pfx"), "password")
    };
    
    // Fired when a CONNECT request is received
    explicitEndPoint.BeforeTunnelConnect += OnBeforeTunnelConnect;
    
    // An explicit endpoint is where the client knows about the existence of a proxy
    // So client sends request in a proxy friendly manner
    proxyServer.AddEndPoint(explicitEndPoint);
    proxyServer.Start();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多