如何在浏览器之类的Cookie中使用HttpWebRequest?

时间:2015-08-13 06:43:29

标签: c# cookies httpwebrequest

我正在修复一个模块,检查Google关键字排名,每个关键字每30秒。那天,Google阻止了请求,该模块对我们的项目非常重要。

我在我的模块中使用HtmlAgilityPack,代码是这样的:

adapter.notifyDataSetChanged();

以下是2个函数读/写cookie到二进制文件。

HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;                
req.Method = "GET";            
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6";

// read last cookie from disk, send it with request
CookieContainer cookies = ReadCookiesFromDisk(cookieFile); 
req.CookieContainer = cookies;

// request google, with url like: https://www.google.com/search?start=0&num=20&q=may+do+huyet+ap&hl=vi
resp = req.GetResponse() as HttpWebResponse;

// save new cookie to disk
CookieContainer newCookies = req.CookieContainer;
WriteCookiesToDisk(cookieFile, newCookies); // write cookie to disk using Serialize Object to BinaryFormatter

1天后,Google会通过验证码阻止请求,我发现:

  • 如果我更改了我的IP,我可以继续请求。所以,Google阻止了IP。

  • 使用Opera启用Cookie,即使Google使用相同的关键字阻止我的模块,Opera仍会搜索Google,但如果我禁用Opera的Cookie,则Opera无法像我的模块那样搜索Google。

所以,我试图启用像Opera这样的cookie(就像我上面的代码一样),但Opera工作,但我的代码不起作用。

你能帮我吗?

0 个答案:

没有答案