我在我的脚本中使用来自https://github.com/SirCmpwn/RedditSharp的RedditSharp,我只想问,在使用此连接时如何实现代理?我可以更改代理midscript吗?
答案 0 :(得分: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();
}
删除"密封" RedditSharp.WebAgent类声明中的关键字。
将RedditSharp.WebAgent.CreateRequest方法设为虚拟,所以它看起来像这样:
public virtual HttpWebRequest CreateRequest(string url, string method, bool prependDomain = true)
{
...
}
基于旧版创建自己的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;
}
}
在您的代码中使用它:
var agent = new MyAgent();
var reddit = new Reddit(agent);
...
agent.Proxy = new WebProxy("someproxy.net", 8080);
所以现在你可以随时随地设置代理。没有经过测试,但必须有效。