如何在 HtmlAgilityPack 中将引荐来源网址设置为 HtmlWeb

How to set referrer to HtmlWeb in HtmlAgilityPack

我想分配一个动态的(意思是 referrer 根据请求改变 URL。

我找不到 ReferrerHeaders 属性。我只能看到 PreRequest,我可以向其中添加处理程序。有没有其他方法可以在不使用全局变量的情况下将引荐来源网址传递给处理程序?

   void SomeMethod()
   {
     ....
      var referrer = "some URL";
      //web.Referrer = referrer;  Ideal way, but not possible
      web.PreRequest += OnPreRequest;
      ....
   }

    bool OnPreRequest(HttpWebRequest req)
    {
        req.Referer = ??; //how to know the referrer address here?
        return false;
    }

Is there any other way to pass a referrer to the handler without using a global variable?

您可以使用捕获的变量。例如,请参阅此 link "Understanding Variable Capturing in C#" or this Closures and Captured Variable C#

现在你可以做

void SomeMethod()
{
    var referrer = "some URL";
    web.PreRequest += (req){
        req.Referer = referrer;
        return false;
    };
}

一些注意事项:

What are closures?

Closures are function which can be stored in a variable, passed around as parameter and refer to the variables visible at the time they are defined.

Captured Variable

Outer variable referenced by the closure is called captured variable