【问题标题】:How to use a proxy with RedditSharp?如何在 RedditSharp 中使用代理?
【发布时间】:2014-04-19 05:24:13
【问题描述】:

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

【问题讨论】:

  • 什么类型的代理?远程呼叫代理?网络代理网站?模拟对象?你能把你的问题说得更具体些吗?
  • 我正计划使用 SOCKS。

标签: c# proxy reddit


【解决方案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 类声明中删除“sealed”关键字。

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

所以现在您可以随时随地设置代理。没有真正测试过,但它必须工作。

【讨论】:

  • 谢谢!但是,我这样做了,它似乎对我不起作用。当我登录时,无论代理是什么,登录都会成功,即使它设置为不是正确的代理 IP 和端口。它是否被检测为不真实然后被忽略?我如何知道它是否真的在使用代理,在尝试使用代理之前如何测试代理是否正在运行?就像我说的,我如何绝对确定它实际上是在使用代理登录?
  • 经过一些实验,我非常有信心我尝试使用的代理在代码中不起作用并且被忽略了。因为如果我尝试使用代理使用错误密码登录太多次,它仍然会阻止我登录说当我在 FireFox 中没有代理的情况下访问网站时我必须等待。我一定是做错了什么。
猜你喜欢
  • 2019-12-12
  • 2013-12-23
  • 2018-05-02
  • 2021-09-29
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多