如何使用RedditSharp代理

本文关键字:代理 RedditSharp 何使用 | 更新日期: 2023-09-27 17:50:16

我在我的脚本中使用RedditSharp从https://github.com/SirCmpwn/RedditSharp,我只是问,当连接使用这个我如何实现代理?我可以更改代理的midscript吗?

如何使用RedditSharp代理

没有独立的方法,如果不修改这个库的源代码,您无法完成此操作。

So most pain - less way:

  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删除"sealed"关键字。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);
    

所以现在你可以随时随地设置代理。虽然还没测试过,但肯定能成功

相关文章: