广度优先,模拟爬虫,嗅探URL

2024-02-24 14:08

本文主要是介绍广度优先,模拟爬虫,嗅探URL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在窗体上放两个按钮,一个RichText

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        private Dictionary<string, int> URLs = new Dictionary<string, int>();
       
  
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            long T1=DateTime.Now.Ticks;
            URLs.Clear();
            URLs.Add("http://www.Csdn.Net/default.aspx", 0);

            //最大允许深度5
            for (int i = 0; i < 5; i++)
            {
                widthFirst(i);
            }
            long T2=DateTime.Now.Ticks;
            MessageBox.Show("完成" + URLs.Count + "耗时:" + TimeSpan.FromTicks(T2-T1).Milliseconds + "毫秒");
            button2.Enabled = true;
           
        }
        private void widthFirst(int Deep)
        {
            Dictionary<string, int> tempURLs = new Dictionary<string, int>();
            foreach (string url in URLs.Keys)
            {
                if (URLs[url] == Deep)
                {
                    string[] urlArr = getUrl(url);
                    foreach (string newUrl in urlArr)
                    {
                        if (!URLs.ContainsKey(newUrl) && !tempURLs.ContainsKey(newUrl))
                        {
                            tempURLs.Add(newUrl, Deep + 1);
                        }
                    }
                }
            }
            foreach (string newUrl in tempURLs.Keys)
            {
                URLs.Add(newUrl, tempURLs[newUrl]);
            }  
        }

        /// <summary>
        /// 模拟得到地址数组
        /// </summary>
        /// <returns></returns>
        private string[] getUrl(string url)
        {
            Random Rnd = new Random();
            string[] Arr = new string[Rnd.Next(2,10)];            
            for (int i = 0; i < Arr.Length; i++)
            {
                //如果模拟的地址容易冲突就可能产生只搜索2层的事情。
                Arr[i] = "http://www.Csdn.Net/" + Guid.NewGuid().ToString() + ".aspx";
            }
            return Arr;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int i = 0;
            foreach (string url in URLs.Keys)
            {
                i++;
                this.richTextBox1.Text += i.ToString()+"第" + URLs[url] + "层:" + url + "/n";
                Application.DoEvents();
            }
        }
    }
}

这篇关于广度优先,模拟爬虫,嗅探URL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742345

相关文章

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

hdu1180(广搜+优先队列)

此题要求最少到达目标点T的最短时间,所以我选择了广度优先搜索,并且要用到优先队列。 另外此题注意点较多,比如说可以在某个点停留,我wa了好多两次,就是因为忽略了这一点,然后参考了大神的思想,然后经过反复修改才AC的 这是我的代码 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象