如何在RedditSharp中使用代理?

时间:2014-03-14 04:36:20

标签: c# proxy reddit

我在我的脚本中使用来自https://github.com/SirCmpwn/RedditSharp的RedditSharp,我只想问,在使用此连接时如何实现代理?我可以更改代理midscript吗?

1 个答案:

答案 0 :(得分:1)

没有独立的方法,您无法在不修改此库源代码的情况下完成此任务。

所以最无痛苦的方式:

  1. RedditSharp的重载构造函数 - 使用IWebAgent作为类型添加新参数。所以它看起来像这样:

    public Reddit() : this(new WebAgent())
    {
    
    }
    
    public Reddit(IWebAgent agent)
    {
        JsonSerializerSettings = new JsonSerializerSettings();
        JsonSerializerSettings.CheckAdditionalContent = false;
        JsonSerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore;
        _webAgent = agent;
        CaptchaSolver = new ConsoleCaptchaSolver();
    }
    
  2. 删除"密封" RedditSharp.WebAgent类声明中的关键字。

  3. 将RedditSharp.WebAgent.CreateRequest方法设为虚拟,所以它看起来像这样:

    public virtual HttpWebRequest CreateRequest(string url, string method, bool prependDomain = true)
    {
        ...
    }
    
  4. 基于旧版创建自己的WebAgent:

    public class MyAgent: WebAgent
    {
        public IWebProxy Proxy { get; set; }
    
        public override HttpWebRequest CreateRequest(string url, string method, bool prependDomain = true)
        {
            var base_request = base.CreateRequest(url, method, prependDomain);
    
            if (Proxy != null)
            {
                base_request.Proxy=Proxy;   
            }
    
            return base_request;
        }
    }
    
  5. 在您的代码中使用它:

    var agent = new MyAgent();
    var reddit = new Reddit(agent);
    
    ...
    
    agent.Proxy = new WebProxy("someproxy.net", 8080);
    
  6. 所以现在你可以随时随地设置代理。没有经过测试,但必须有效。