如何监测网站的变更?

5

我已经在做这件事情一个月了,但是在网上没有找到任何有用的信息。我想可能可以每分钟检查网站源代码的变化,但实际上它的源代码每秒钟都在变化,那么我的代码有什么问题呢?还是有其他方法来监控网站的变化呢?

以下是我的代码:

private void Startbtn_Click(object sender, EventArgs e)
   {

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");                            
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader source = new StreamReader(response.GetResponseStream());
richTextBox1.Text = source.ReadToEnd();
timer1.Start();
timer1.Interval = 60000;

     }

private void timer1_Tick(object sender, EventArgs e)
    {

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader source2 = new StreamReader(response.GetResponseStream());
        RichTextBox checker = new RichTextBox();
        checker.Text = source2.ReadToEnd();
        if (richTextBox1.Text == "")
        {
            richTextBox1.Text = checker.Text;

        }
        else
        {


            if (richTextBox1.Text != checker.Text)
            {
                MessageBox.Show("somthing changed");
                richTextBox1.Text = checker.Text;
            }
            else
            {
                MessageBox.Show("No changes yet!");

            }
        }
    }
2个回答

1

首先,当您需要将页面的实际内容与存储的版本进行比较时,我建议您:

  1. 比较您存储的MD5哈希值与新哈希值(不是每次都比较内容)
  2. 记住页面中可能存在您认为不属于页面内容更改的可变元素...

某些服务器会返回一个Last-Modified头,您可以使用它来进行比较。


0
你已将计时器间隔设置为5000毫秒,这意味着它只有5秒。因此,你的代码将每5秒运行一次。如果你想每分钟运行一次计时器,你应该将其设置为1000x60=60000毫秒。希望这可以帮到你。

我知道这只是一个例子,关于时间间隔的问题我会进行修改以避免进一步的疑问。重点是它总是能够发现网站源代码中的变化! - Porphan
我明白了,你的意思是实际内容每秒钟都在变化。其实,如果你看一下上面请求返回的响应,会有很多数据并且每个请求都可能会改变。据我所知,每个请求和响应实际上都是唯一的。因此,这样,对于你的每个请求,响应也将是独特的。重点是,你需要澄清你要比较的部分,然后从响应中过滤出该部分,然后进行比较。但是为了做到这一点,你首先需要详细了解“响应”,并查看每个请求会发生什么变化。 - Shahzad Latif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接