首页 新闻 搜索 专区 学院

访问太频繁拒绝访问怎么办?

0
悬赏园豆:100 [已关闭问题] 关闭于 2010-12-06 10:41

小弟写了一个博客备份工具,在备份的过程中要对每篇博客地址进行访问,取得网页源码进行备份。
现在遇到的问题是,当备份到150篇左右时,网站拒绝访问了,也就是说访问太频繁被拒绝了,这个备份程序放在一个单独的类库中,请问怎么控制访问的频率(能不能用线程等待实现,如果能请指点一下),有没有其他好的解决方案?
简要代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;

namespace BlogMoveLib
{
public class BlogAnalysis
{
public IList<Blog> Analysis(IList<string> BlogAllUrl)
{
string content;
Blog model
=new Blog();
IList
<Blog> blogList = new List<Blog>();
foreach(string url in BlogAllUrl)
{
content
=GetHtml(url);
model
= GetBlogInfo(content);
blogList.Add(model);
}
if (blogList.Count > 0)
return blogList;
return null;
}

/// <summary>
/// 获得网址原代码
/// </summary>
/// <param name="Url">网址</param>
/// <returns>string</returns>
private string GetHtml(string Url)
{
//过程省略
}

/// <summary>
/// 解析博客主体
/// </summary>
/// <param name="content">网页源码</param>
/// <returns>博客实体</returns>
private Blog GetBlogInfo(string content)
{
//...过程省略
}
}
}

 

问题补充: 通过冒用搜索引擎,本问题得到解决: Uri uri = new Uri(Url); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "GET"; request.AllowAutoRedirect = true; request.UserAgent = "Googlebot/2.1 (+http://www.google.com/bot.html)"; request.Referer = string.Concat("http://", uri.Host); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream streamReceive = response.GetResponseStream(); Encoding encoding = Encoding.UTF8; StreamReader streamReader = new StreamReader(streamReceive, encoding); strResult = streamReader.ReadToEnd();
artwl的主页 artwl | 专家六级 | 园豆:16536
提问于:2010-12-05 18:24
< >
分享
所有回答(3)
0

sleep 一下就OK了,也可以用TIMER来处理~

czjone | 园豆:205 (菜鸟二级) | 2010-12-05 18:29
你好,能说详细点吗,因为这个是在类库中,能不能取到当前的线程然后sleep
支持(0) 反对(0) artwl | 园豆:16536 (专家六级) | 2010-12-05 18:32
0

mark

yearN | 园豆:551 (小虾三级) | 2010-12-05 19:25
0

每GetBlogInfo一次用Thread.Sleep让程序暂停一下,降低访问频率,这样应该就不会被封了.

或者你也可以在GetHtml方法中加入代理试试.

I,Robot | 园豆:9583 (大侠五级) | 2010-12-05 20:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册