爬虫抓取whatweb接口

  1. 前言:
  2. 正文:

前言:

之前一直想抓whatweb的接口。但是明明写的没有毛病,就是抓不了今天不死心的在写了一次。发现了问题的所在

正文:

什么是whatweb?

什么是WhatWeb?
WhatWeb识别网站。它的目标是回答“这是什么网站?”的问题。WhatWeb可识别Web技术,包括内容管理系统(CMS),博客平台,统计/分析包,JavaScript库,Web服务器和嵌入式设备。WhatWeb拥有超过1700个插件,每个插件都能识别不同的东西。WhatWeb还标识版本号,电子邮件地址,帐户ID,Web框架模块,SQL错误等。

WhatWeb可以隐秘,快速,或彻底但缓慢。WhatWeb支持攻击级别来控制速度和可靠性之间的权衡。当您在浏览器中访问网站时,该交易包含许多关于Web技术为该网站提供支持的提示。有时,单个网页访问包含足够的信息来识别网站,但如果没有,WhatWeb可以进一步询问网站。默认的攻击级别称为“隐身”,速度最快,只需要一个网站的HTTP请求。这适用于扫描公共网站。开发了更积极的模式用于渗透测试。

大多数WhatWeb插件都是彻底的,并且可以识别从微妙到显而易见的一系列线索。例如,大多数WordPress网站可以通过元HTML标签识别,例如'',但少数WordPress网站删除了这个识别标签,但这并不妨碍WhatWeb。WordPress WhatWeb插件有超过15个测试,包括检查favicon,默认安装文件,登录页面,以及检查相对链接中的“/ wp-content /”。

whatweb在线检测地址:
https://www.whatweb.net/

基本操作抓包:

从图中可以看见请求参数为target
然后正常的写一个headers,然后用requests进行post请求应该就是这样吧= =很遗憾的是,这样子什么也不会返回。后来我看了一下控制台才发现原因。

图中的意思是,没有ConsoleContent-length头拒绝进行识别,后面抱着半信半疑的进行了测试发现居然可以了
代码:

#-*-coding:'utf-8'-*-
#name:九世
#time:2018-8-8-20:58
import requests
from bs4 import BeautifulSoup

def whatweb():
    banner=''' ____  __.__.__  .__                
|    |/ _|__|  | |  |  __ _______   
|      < |  |  | |  | |  |  \__  \  
|    |  \|  |  |_|  |_|  |  // __ \_
|____|__ \__|____/____/____/(____  /
        \/                       \/ '''
    print(banner)
    user=input('Domain name to be querying:')
    headers={'user-agent':'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36',
             'Content-length':'20',
             'Connection':'keep-alive'}

    data={'target': '{}'.format(user)}
    url='https://www.whatweb.net/'
    reqts=requests.post(url=url,headers=headers,data=data)
    dw=BeautifulSoup(reqts.text,'html.parser')
    for p in dw.find_all('pre'):
        print(p.get_text())

def jy2():
    banner = ''' ____  __.__.__  .__                
    |    |/ _|__|  | |  |  __ _______   
    |      < |  |  | |  | |  |  \__  \  
    |    |  \|  |  |_|  |_|  |  // __ \_
    |____|__ \__|____/____/____/(____  /
            \/                       \/ '''
    print(banner)
    user = input('file:')
    dk=open('{}'.format(user),'r')
    for r in dk.readlines():
        qc="".join(r.split('\n'))
        headers = {
            'user-agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36',
            'Content-length': '20',
            'Connection': 'keep-alive'}

        data = {'target': '{}'.format(qc)}
        url = 'https://www.whatweb.net/'
        reqts = requests.post(url=url, headers=headers, data=data)
        dw = BeautifulSoup(reqts.text, 'html.parser')
        for p in dw.find_all('pre'):
            print(p.get_text())

print('[1] 单个域名')
print('[2] 批量导入')
xw=input('xz=>:')
if xw=='1':
    whatweb()
elif xw=='2':
    jy2()

两个功能,一个单检测,一个批量导入进行检测。
测试图如下:

转载请声明:来自422926799.github.com


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:爬虫抓取whatweb接口

本文作者:九世

发布时间:2018-08-08, 20:34:08

最后更新:2019-04-19, 20:36:16

原始链接:http://jiushill.github.io/posts/6aba04f9.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录