我做了个程序取百度的新闻,2小时取1次,1次大概取几百条不等,取了一个星期多百度就开始封我IP了,经常是我取下他封下,不取了又解冻了,取了1个月以后就完全把我IP封掉,永远访问不了news.baidu.com了.
我获取的方式如下:
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Web-Sniffer/1.0.24";
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream resStream = response.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.Default);
result = sr.ReadToEnd();
resStream.Close();
sr.Close();
有人说改变自己传出去的ip包,把ip信息去掉,可是具体该怎么做呢?
请大家帮忙看看如何才能让百度封不了我,如果被百度这样搞我数据得不到保证就没办法弄了。万分感谢大家帮忙!
你也用爬虫爬东东呀。
这样会封锁你的IP,你用无界代理,当访问不成功时自动换IP访问
content =content.Replace ("'","");
if (content.IndexOf("免责声明") > 0)
{
//this.contentBox.Text = content;
string sql = "update Comment set HtmlInfo='{0}',tag=1 where id="+IDList [ID];
sql = string.Format(sql,content);
this.contentBox.Text = sql;
this.contentBox.ScrollToCaret();
SqlHelper.ExecuteNonQuery(cn,CommandType.Text ,sql);
urlId++;
ID++;
}
else //哈哈,对方服务器可能阻止了此IP,我们就换个IP吧
{
if (process != null)
{
process.Kill();
}
process = System.Diagnostics.Process.Start("wujie_8.exe");
System.Threading.Thread.Sleep(3000);//等3秒钟,让无界起来
return false;
}
这是我以前写的爬虫里启用代理的一部分程序。。。
============================
用socket连接80端口 Get 首页,然后分析所有链接,再用socket分别GET所有链接(注意,如果你不想程序永不停歇的话,外域的网页就不要去抓了),如此循环往复,GET->分析->GET->分析.....
那么就是一个爬虫了