精华内容
下载资源
问答
  • 域名解析就是域名到IP地址的转换过程,该过程由DNS服务器完成(来自百度百科)先来了解两个知识点1、一个域名同一时刻只能对应一个IP地址2、一个IP地址可以解析绑定多个域名,没有限制基于以上知识点,假如我们已知....

    fca4c48880e1d1ec9a91ebb1a6350ab2.png

    域名解析与IP地址

    域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务;IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程,该过程由DNS服务器完成(来自百度百科)

    先来了解两个知识点

    1、一个域名同一时刻只能对应一个IP地址

    2、一个IP地址可以解析绑定多个域名,没有限制

    基于以上知识点,假如我们已知一个IP地址,我们怎么才能获取解析到该IP地址的所有域名信息呢?一种方式是国家工信部能开放查询接口以供查询(不知道会不会开放?);另外一种方式就是接下来我要分享的——爬虫实现:根据IP地址反查域名。

    实现原理

    实现原理其实很简单,现在已有网站提供了根据IP地址查询域名的功能,但是需要人为登录网站输入IP地址查询,我想要实现程序自动化查询,所以就想到了爬虫的方式,简单来说,就是模拟人的查询行为,将查询结果解析成我想要的域名列表。

    site.ip138.com为例,打开F12,输入一个IP查询,观察控制台请求,看到下图中信息

    请求地址为:http://site.ip138.com/119.75.217.109/

    请求方式为:GET

    3d6cbb6d8c66aa5a5b5d1d5fa05d1f9f.png

    然后,分析Response,可以看到,在页面上看到的绑定域名信息就是下图红框中<span>的内容,所以只要能将Response的内容解析出来,获取到<span>的内容就可以得到想要的域名列表。

    df3b67c78ff6bbe71e4054093de666ad.png

    上述Response是HTML页面,使用jsoup来解析HTML简直完美。

    jsoup是什么?

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
    //解析成Document对象
    Document document = Jsoup.parse(result);
    if (document == null) {
        logger.error("Jsoup parse get document null!");
    }
    //根据ID属性“list”获取元素Element对象(有没有感觉很像jQuery?)
    Element listEle = document.getElementById("list");
    
    //根据class属性和属性值筛选元素Element集合,并通过eachText()遍历元素内容
    return listEle.getElementsByAttributeValue("target", "_blank").eachText();

    result的内容通过HttpClient模拟HTTP请求

    HttpGet httpGet = new HttpGet(url);
    httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
    httpGet.setHeader("Accept-Encoding", "gzip, deflate");
    httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.9");
    httpGet.setHeader("Cache-Control", "max-age=0");
    httpGet.setHeader("Connection", "keep-alive");
    httpGet.setHeader("Cookie", "Hm_lvt_d39191a0b09bb1eb023933edaa468cd5=1553090128; BAIDU_SSP_lcr=https://www.baidu.com/link?url=FS0ccst469D77DpdXpcGyJhf7OSTLTyk6VcMEHxT_9_&wd=&eqid=fa0e26f70002e7dd000000065c924649; pgv_pvi=6200530944; pgv_si=s4712839168; Hm_lpvt_d39191a0b09bb1eb023933edaa468cd5=1553093270");
    httpGet.setHeader("DNT", "1");
    httpGet.setHeader("Host", host);
    httpGet.setHeader("Upgrade-Insecure-Requests", "1");
    httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
    
    String result = HttpUtils.doGet(httpGet);

    HTTP请求工具类

    public class HttpUtils {
    
        private static Logger logger = LoggerFactory.getLogger(HttpUtils.class);
    
        public static String doGet(HttpGet httpGet) {
            CloseableHttpClient httpClient = null;
            try {
                httpClient = HttpClients.createDefault();
                RequestConfig requestConfig = RequestConfig.custom()
                        .setConnectTimeout(5000).setConnectionRequestTimeout(10000)
                        .setSocketTimeout(5000).build();
                httpGet.setConfig(requestConfig);
                HttpResponse httpResponse = httpClient.execute(httpGet);
                if (httpResponse.getStatusLine().getStatusCode() == 200 ||
                        httpResponse.getStatusLine().getStatusCode() == 302) {
                    HttpEntity entity = httpResponse.getEntity();
                    return EntityUtils.toString(entity, "utf-8");
                } else {
                    logger.error("Request StatusCode={}", httpResponse.getStatusLine().getStatusCode());
                }
            } catch (Exception e) {
                logger.error("Request Exception={}:", e);
            } finally {
                if (httpClient != null) {
                    try {
                        httpClient.close();
                    } catch (IOException e) {
                        logger.error("关闭httpClient失败", e);
                    }
                }
            }
            return null;
        }
    }

    新增Controller

    @RestController
    public class DomainSpiderController {
    
        private static Logger logger = LoggerFactory.getLogger(DomainSpiderController.class);
    
        @Autowired
        private DomainSpiderService domainSpiderService;
    
        /**
         * @param ip 119.75.217.109
         * @return
         */
        @RequestMapping("/spider/{ip}")
        @ResponseBody
        public List<String> domainSpider(@PathVariable("ip") String ip) {
            long startTime = System.currentTimeMillis();
            List<String> domains = domainSpiderService.domainSpiderOfIp138(ip);
            if(domains == null || domains.size() == 0) {
                domains = domainSpiderService.domainSpiderOfAizan(ip);
            }
            long endTime = System.currentTimeMillis();
    
            logger.info("完成爬虫任务总耗时:{}s", (endTime - startTime) / 1000);
    
            return domains;
        }
    }

    启动Spring Boot应用,访问浏览器:http://localhost:8080/spider/119.75.217.109 获得返回结果如下:

    6bbc0f10dd960d801bc9853a38407231.png

    怎么样?是不是很简单?

    优化改进:有时候仅仅通过一个网站查询的域名数据可能不太准确,甚至查询不到数据,我们也没法判断谁才是正确的,所以,可以通过爬取多个网站的结果结合起来使用,例如:dns.aizhan.com

    提出疑问:这些提供根据IP反查域名的网站,是怎么实现的呢?我咨询过其他人,他们的回答是这些网站收集了很多IP和域名的对应关系,真实情况是这样的吗?

    示例源码

    • domain-spider

    代码已上传至码云Github上,欢迎下载学习

    • Gitee
    • Github
    展开全文
  • 配置项标识(Configuration Item Identifier,CII),在进行配置管理过程中,为了便于检索配置项,需要制定一套编码规则来标识配置项,这编号代码就是配置项的标识符。 转载于:...

    配置项标识(Configuration Item Identifier,CII),在进行配置管理过程中,为了便于检索配置项,需要制定一套编码规则来标识配置项,这个编号代码就是配置项的标识符。

    转载于:https://www.cnblogs.com/myblogs2012/archive/2012/11/14/2770039.html

    展开全文
  • 《网页设计与制作Dreamweaver》期末考试试题 1《网页设计与制作》期末考试...A、FTP 服务 B、WWW 服务 C、Telnet 服务 D、Gopher 服务2、为了标识一个 HTML 文件开始应该使用的 HTML 标记是 ( )。A、 B、 C、 D、...

    《网页设计与制作Dreamweaver》期末考试试题

    1《网页设计与制作》期末考试试题一、单项选择题(每个题只有一个的答案是正确的。每题 3 分,共 60 分)1、目前在 Internet 上应用最为广泛的服务是 ( )。A、FTP 服务 B、WWW 服务 C、Telnet 服务 D、Gopher 服务2、为了标识一个 HTML 文件开始应该使用的 HTML 标记是 ( )。A、 B、 C、 D、3、在 HTML 中,单元格的标记是 ( )。A、 B、 C、 D、4、在网页中最为常用的两种图像格式是( ) 。A、JPEG 和 GIF B、JPEG 和 PSD C、GIF 和 BMP D、BMP 和 PSD5、在 HTML 中,要定义一个空链接使用的标记是 ( ).A、 B、 C、 D、6、用 Fireworks 切割图形时,需要的工具是()A、裁剪 B、选取框 C、切片 D、自由变形7、body 元素用于背景颜色的属性是()A、alink B、vlink C、bgcolor D、background8、下面说法错误的是( )A、规划目录结构时,应该在每个主目录下都建立独立的 images 目录B、在制作站点时应突出主题色C、人们通常所说的颜色,其实指的就是色相D、为了使站点目录明确,应该采用中文目录9、在 Dreamweaver MX 中,想要使用户在点击超链接时,弹出一个新的网页窗口,需要在超链接中定义目标的属性为 ( )A、parent B、_bank C、_top D、_self10、网页制作技术不可以实现由一个文件控制一大批网页 ( )A、CSS 文件 B、库 C、模板 D、层11、在网页制作过程中,LOGO 的标准尺寸为( )Pixels.A、468*60 B、80*31 C、 88*31 D、150*6012、在色彩的 RGB 系统中,32 位十六进制数 000000 表示的颜色是( ).2A、黑色 B、红色 C、黄色 D、白色13、进行站点设置时,关于下图的设置正确的说法是( A ) 。A. 指定了站点中的文件存储在计算机上的位置B. 指定了站点中的文件存储在 Internet 上的位置C. 可以在本地的计算机上直接修改网络上页面的内容D. 当前站点中的网页已经上传到互联网中,不能再进行修改14、如果要进行“新建站点“的设置,最直接并常用的操作应在下面( )进行。A. 标志 1 的菜单栏中B. 标志 2 的插入栏中C. 标志 3 的文件窗口中D. 标志 4 的面板组中4213315、下列选项中( B )按钮是插入 Fireworks HTML。A.B.C.D.16、在 Dreamweaver8 中插入表格,应采用( C )操作。A. 通过单击“属性”面板中的“快速标签编辑器”B. 通过单击 HTML 插入栏中的按钮 C. 通过单击 HTML 插入栏中的按钮 D. 通过单击 HTML 插入栏中的按钮 17、关于替换文本的描述正确的是( C ) 。A. 设计鼠标经过图像时,必须设置替换文本B. 替换文本的作用是代替对应的图片C. 替换文本的作用是当鼠标指向对应的图片时,在鼠标位置旁会弹出一个包含替换文本内容的文本显示区域D. 设计导航条时,必须设置替换文本18、关于 Dreamweaver MX 的布局模式,下列说法错误的是( B ) 。A. 在布局模式下,用户可以在网页中直接画出表格与单元格B. 在布局模式下,单元格和表格均可以用鼠标自由拖动,调整其位置C. 利用布局模式对网页定位非常方便D. 使用布局模式的缺点是生成的表格比较复杂,不适合大型网站使用,一般只应用于中小型网站。19、下列( A )是 Dreamweaver 8 中模板文件的扩展名。A. .dwtB. .htmC. .lbiD. .cop20、关于表格背景,说法正确的是( D ) 。A. 只能定义表格背景颜色,不能用图片作为表格背景B. 可以使用颜色或图片作为表格背景图,但图片格式必须是 GIF 格式C. 可以使用颜色或图片作为表格背景图,但图片格式必须是 JPEG 格式D. 可以使用颜色或图片作为表格背景图,可以使用任何的 GIF 或者 JPEG 图片文件21、在下图的属性面板中,如果要设置 flash 动画的品质,应( C ) 。A. 点击标志 1 所对应的复选框B. 点击标志 2 所对应的复选框C. 点击标志 3 进行设置D. 点击标志 4 进行设置422、如果想对图片进行锐化处理,可以选择( D ) 。A. 在箭头 1 指向的B. 在箭头 2 指向的C. 在箭头 3 指向的D. 在箭头 4 指向的23、以下几个事件中代表“鼠标滑到”的事件是( C ) 。A. OnMouse DownB. OnMouse OutC. OnMouse OverD. OnouseUp24、如果要在网页中插入 Flash 动画,最常用的操作应( )进行设置。A. 点击标志 1B. 点击标志 2C. 点击标志 3D. 点击标志 425、在 HTML 语言中,如果要对文字的字体进行修饰,应通过( ) 。A. font-family: “宋体“;B. font-size: 9pt;C. color: #990000D. href=“/example1/2.html“26、将表格中各单元格之间的距离加大,应在( )中设置数字。41 32412 35A. 在箭头 1 指向的框中输入B. 在箭头 2 指向的框中输入C. 在箭头 3 指向的框中输入D. 在箭头 4 指向的框中输入27、关于下列代码,描述正确的是( ) 。日期课程9 月 1 日Dreamweaver 网页设计9 月 10 日Flash 动画设计12346A. 该表格有 2 行、3 列B. 该表格有 3 行、3 列C. 该表格有 3 行、2 列D. 该表格有 2 行、2 列28、下列特殊符号( )表示的是空格。A. B. C. D. 29、关于绝对路径的使用,以下说法错误的是( ) 。A. 绝对路径是指包括服务器规范在内的完全路径,通常使用 http:// 来表示B. 绝对路径不管源文件在什么位置都可以非常精确地找到C. 如果希望链接其它站点上的内容,就必须使用绝对路径D. 使用绝对路径的链接不能链接本站点的文件,要链接本站点文件只能使用相对路径30、以下( )标记是插入到网页中的命名锚记。A.B.C.D.E. 在 Dreamweaver 8 中,下面对象中可以添加热点的是( ) 。A.文字 B.图像C.层 D.动画31、如果想对图片的亮度和对比度进行调整,可以选择( ) 。7A. 在箭头 1 指向的B. 在箭头 2 指向的C. 在箭头 3 指向的D. 在箭头 4 指向的32、关于超链接,下列( )属性是指定链接的目标窗口。A. HrefB. NameC. TargetD. Title33、如果要为一段文字添加一个电子邮件链

    展开全文
  • 在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号。比如文章编号、记录序号等等。自增长的标识列的引用很大程度上方便了数据库程序的开发,但有时这个固执的字段类型也会带来...

    http://www.2cto.com/database/201203/123564.html

    在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号。比如文章编号、记录序号等等。自增长的标识列的引用很大程度上方便了数据库程序的开发,但有时这个固执的字段类型也会带来一些麻烦。

    一、修改标识列字段值:

    有时,为了实现某种功能,需要修改类型为Identity自增长类型的字段的值,但由于标识列的类型所限,这种操作默认是不允许的。比如目前数据库有5条正常添加的数据,此时删除2条,那么如果再添加数据时,自增长的标识列会自动赋值为6,可这时如果想在插入数据时给赋值3呢,默认是不允许的。如果您特别想改变这个字段的值,完全由自己控制该标识字段值的插入,方法还是有的,哈哈。

    SET IDENTITY_INSERT /[TABLE/] [ON|OFF]
    使用上述语句,可以方便的控制某个表的某个自增长标识列是否自动增长,也就是说是否允许你在insert一条记录时手动指定标识列字段的值。如果指定为on,则可以insert时指定标识列字段的值,该值不自动增长赋值。当然,如果使用完毕,还需使用这个语句将开关关闭到默认状态off,不然下次insert数据时该字段还是不会自动增长赋值的,有始有终嘛。

    二、重置标识列字段值:

    当数据记录被删除一部分后,后面再添加的新数据记录,标识列数值会有很大的空闲间隔,看上去是不是很不爽呢。即使你删除表中全部记录,identity标识列的值还是会无休止的自动增加变大,而不是从头开始增长。通过下面这条语句可以重置自增长字段的种子值:

    DBCC CHECKIDENT(TABLE, [RESEED|NORESEED], [1])
    上述语句将把指定表的种子值强制重设为1。然而,如果你不想将种子重设为1,你可以用你想用的种子值替代第三个参数。如果你想知道当前的种子,而不是想重设标识种子,这时你就要用NORESEED,而不用再去设置第三个参数。

    展开全文
  • 创造了四excel表格,分别是client、material、sales data和sales organization。为了保持表头一致(因为暂时不是很清楚BW关联的读取方式),所以表头都用了中文。四表表头如下: 客户标识/客户名称/客户地址 ...
  • UI/UX 设计 - 扩展您的经营理念我们所要完成的任务:重新塑造或完善品牌的视觉标识;重新设计当前 Bloomsbury 开端网站重要页面的 UI/UX(帮助用户快速地了解到课程的重要性从而鼓励他们注册课程);带着重要的资源...
  • 通过标签将网络上的文档格式进行统一,使分散的Internet(网络资源)连接为一个逻辑整体。 超文本:可以包含图片音频视频等等。一般通过超链接进行信息关联。 标记:也就是标签。用<>包裹具有一定含义的内容,...
  • <div><p>学习 React 的过程中实现了一个个人主页,没有复杂的实现和操作,适合入门 ~ 这个项目其实功能很简单,就是常见的主页、博客、demo、关于我等功能。 页面样式都是自己写的,黑白...
  • 为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。 http://www.cnblogs.com/shijiaqi1066/p/5999610.html 实现: package sjq.mylock; import java.util....
  • 从浏览器输入一个 url 开始,到页面完成渲染,整个过程的分析,重要知识点的介绍,以及哪些地方前端需要着重注意可以做优化。 以打开 google.com 为例。 第一部分:过程 也就是链路&#...
  • HTML称为超文本标记语言,是标识性的语言。在前端开发中离不开HTML,支持不同数据格式的文件镶入。前端工程师在面试过程中涉及到一些基础知识,常见的前端HTML面试题有哪些呢?本文,分享12道经典的HTML面试题给...
  • 以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
  • 标签的作用:标识出网页中不同的内容 每内容都有对应的标签 开始标签 结束标签 <标签名> 需要修饰的文本</标签名> 为了分辨开始和结束,结束的标签名是</标签名> 开始和结束之间放的是修饰...
  • 1.1 统一资源定位器(URL) ... URI是一个唯一的标识一个资源的串URI分成了两个子类一个是URL一个是URN URLUniversal Resource Locator统一资源定位符 不仅定义了从何处获取资源而且还定义了如何获取资源即采用何种协议
  • 为了完成各窗口之间的相互操作,我们必须为每一个窗口起一个名字,这个名字用属性Name来定义。 窗口标识(Frame Name) 例如: 定义了窗口名称,还应该有Target来配合使用,Target属性指定了所链接的文件出现在哪
  • 一般我们会使用到2个标签,一个是acronym,另一个是abbr。其中,acronym被定义为首字母缩写词,abbr定义一个缩写内容。目前的一些较为高级的浏览器,如FF,OP,都会对2个标签的内容进行特殊的显示,...
  • 1.每次运行一个测试集合(testsuit)e都会生成一个结果,并保存为html文件(为了不覆盖之前的测试结果,所以需要生成一个唯一标识) 2.运行之后会在数据库生成一条记录(django 的model--record),该记录与运行...
  • 1.为了标识一个HTML文件,应该使用标记 html 2.form表单中提交数据的目的地址的属性是 action 3.关于post:安全性较好,地址栏看不到提交的数据,超链接标识post提交方式,可以传输大量数据 4.表单的提交方式有 2 种...
  • Html 无序列表

    2018-10-08 17:30:11
    为了使逻辑更加清晰,我们可以为这一个独立的逻辑部分设置一个名称,用id属性来为提供唯一的名称,这个就像我们每个人都有一个身份证号,这个身份证号是唯一标识我们的身份的,也是必须唯一的。 语法: … 代码演示...
  • 一个标准的html页面<html>和</html> 在文档的最外层文档中的所有文本和html 标签都包含在其中它表示该文档是以超文本标识语言HTML编写的事实上现在常用的Web浏览器都可以自动识别 HTML文档并不要求有<html>标签也不...
  • 1. HTML是一种标记语言,它是由(C)解释执行的A.不需要解释 B.WindowsC.浏览器D.标记语言处理软件2.在HTML文档中用于表示页面标题的标记对是(D)A. B. C. D. 3.在HTML文档中用于表示表格的...A....为了标识一个HTML文件,...
  • HTML概括

    2017-02-09 10:48:38
    html概括 什么是html?  HTML(Hypertext Markup Language)...而html这种标记语言就是为了让网页展示更丰富,更美观的种语言。  它负责网页的三要素之中的结构。  HTML使用标签的的形式来标识网页中的不
  • HTML -1

    2021-01-02 10:27:28
    今天开始在菜鸟教程上学习HTML,写一篇博客作为今天的总结。 首先,我觉得这个真的没有什么要记录的或者说是所有的都要记录,所以就简单...关于HTML属性,我认为是用来分辨标识一个特性 注意(小写,单引号) ...
  • HTML中的div标签

    千次阅读 2014-11-07 09:54:56
    为了使逻辑更加清晰,我们可以为这一个独立的逻辑部分设置一个名称,用id属性来为提供唯一的名称,这个就像我们每个人都有一个身份证号,这个身份证号是唯一标识我们的身份的,也是必须唯一的。 语法: …
  • 为了更方便的操作这些标签,就需要给这些标签标识一个身份牌。 目录 1. name :指定标签的名称。 2. id :指定标签的唯一标识。 3. class :指定标签的类名。   1. name 指定标签的名称...
  • 1.什么时候使用ID ID的用途是在页面中唯一的标识。正因为如此,同一个页面中的每一个ID属性,都必须有独一无二的值(名字)。换一个角度讲,每个ID名在页面中都只能用一次。 <nav id="mainmenu">...为了标识

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 315
精华内容 126
关键字:

为了标识一个html