日期:2014-05-17  浏览次数:20645 次

突破对方限制抓取的方法?
用c#模拟httpRequest进行抓取网页,但对方网站有防程序抓取机制:分析对方可能会判断特定IP在一定时间内对网站或页面的访问次数。我抓取用单线程模式循环特定页面进行抓取,然后再用SystemThread进行抓完中断一定时间,但感觉用SystemThread(似乎会直接暂停主线程,因为我这个程序是主线程在跑)不好,因为我程序有其他线程要执行其他任务,那如何抓取的时候尽量模仿成人类访问网页习惯来突破对方抓取呢?各位有经验的抓取大师帮忙下

------解决方案--------------------
我以前也是直接sleep()的·既然你说有其他任务要做,何不直接把程序分开来算了? 抓取就只做抓取的~~
------解决方案--------------------
void GetPage()
{
while(true)
{
//do get
Thread.Sleep(1000);
}
}

开个线程执行上面的函数不会有问题
------解决方案--------------------
那你随机一个暂停时间好了
Thread.Sleep(new Random().Next(1111,4444));
------解决方案--------------------
JS,或AJAX获取的数据很难抓取
延迟
System.Threading.Timer t = new System.Threading.Timer(new TimerCallback(TimerProc1));
t.Change(1000, 1000);
private void TimerProc1(object state)
{
 System.Threading.Timer t = (System.Threading.Timer)state;
}