用Java获取一个网站的基本配置信息

前言:我们在进行网站渗透的时候,通常第一步都是获取目标网站的一些配置信息,比如:所用的服务器类型,用了哪种CMS,网站又用了哪些插件等等。当然,我们要是在这一步获取到了比较充分的信息,毫无疑问接下来我们就可以有针对性地进行漏洞搜索和挖掘,对最后的渗透测试是非常有帮助的。

一 简介

今天,我主要是给大家安利一个比较好的对目标网站进行基本信息探测的网站,它就是:https://builtwith.com 。使用起来也很简单,直接对目标网站进行搜索就行了,比如说我们搜索:https://builtwith.com/blog.6ag.cn 。返回的结果如下:

这里,我就截了两张图,其他的信息就不截图了,留给大家自己去看看吧

接下来,我在对这些信息进行分析后,决定用Java将一些比较有用的信息提取出来,以一种更为直观的方式展示在我们面前,以方便我们后面的分析

二 代码实现

代码原理很简单,就是通过发起请求,然后对获取到的网页源代码进行正则匹配出我们所需要的信息。代码如下:

/**
	 * 通过网站:https://builtwith.com查询信息
	 * @param domain
	 * @return 查询到的域名信息
	 * */
	public static String getServerMoreMess(String domain){
		String message = "";
		try {
			URL url = new URL("https://builtwith.com/" + domain);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setRequestMethod("GET");
			connection.setReadTimeout(20000);
			connection.setReadTimeout(20000);

			if(connection.getResponseCode() == 200){
				InputStream inputStream = connection.getInputStream();
				BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
				String line = "";
				Pattern pattern = null;
				Matcher matcher = null;
				while((line = reader.readLine()) != null){
					pattern = Pattern.compile("<span>Web Server</span>");
					matcher = pattern.matcher(line);
					if(matcher.find())
						message = message + "Web Server:\n";

					pattern = Pattern.compile("<a href=\"//trends.builtwith.com/Web-Server/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>");
					matcher = pattern.matcher(line);
					if(matcher.find())
						message = message + "    " + matcher.group(1) + "\n";

					pattern = Pattern.compile("<span>Content Management Systems</span>");
					matcher = pattern.matcher(line);
					if(matcher.find())
						message = message + "Content Management Systems:\n";

					pattern = Pattern.compile("<a href=\"//trends.builtwith.com/cms/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>");
					matcher = pattern.matcher(line);
					while(matcher.find())
						message = message + "    " + matcher.group(1) + "\n";

					pattern = Pattern.compile("<span>Frameworks</span>");
					matcher = pattern.matcher(line);
					if(matcher.find())
						message = message + "Frameworks:\n";

					pattern = Pattern.compile("<a href=\"//trends.builtwith.com/framework/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>");
					matcher = pattern.matcher(line);
					while(matcher.find())
						message = message + "    " + matcher.group(1) + "\n";

					pattern = Pattern.compile("<span>Widgets</span>");
					matcher = pattern.matcher(line);
					if(matcher.find())
						message = message + "Widgets:\n";

					pattern = Pattern.compile("<a href=\"//trends.builtwith.com/widgets/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>");
					matcher = pattern.matcher(line);
					while(matcher.find())
						message = message + "    " + matcher.group(1) + "\n";

					pattern = Pattern.compile("<span>Encoding</span>");
					matcher = pattern.matcher(line);
					if(matcher.find())
						message = message + "Encoding:\n";

					pattern = Pattern.compile("<a href=\"//trends.builtwith.com/encoding/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>");
					matcher = pattern.matcher(line);
					while(matcher.find())
						message = message + "    " + matcher.group(1) + "\n";
				}

			}

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return message;
	}

三 测试

public static void main(String[] args) {
		String str = "";
//		str = ServerType.getServerMoreMess("www.zifangsky.cn");
		str = ServerType.getServerMoreMess("blog.6ag.cn/");

		System.out.println(str);
	}

效果如下:

Web Server:
    Tengine
Content Management Systems:
    WordPress
    WordPress Weekly Activity
    WordPress 4.4
Widgets:
    Crayon Syntax Highlighter
    Crayon Syntax Highlighter
    WordPress Plugins
    Font Awesome
Encoding:
    UTF-8

时间: 2024-10-20 18:20:39

用Java获取一个网站的基本配置信息的相关文章

利用PHP获取一个页面上的链接信息

开发中我们可能会获取某个页面或是一段内容中的链接信息,下面我分享一个我写的函数给大家,希望能帮到大家. 函数功能: 1.获取一段内容中链接信息: 2.获取一个URL中链接信息: 3.剔除锚链等无效的链接 4.获取当前域下的链接信息 5.获取他域下的链接信息 6.保留链接的文本信息 代码: /** * +---------------------------------------------------------- * 功能:获取一个网页或一段内容里面的链接信息 * +------------

黑马程序员——java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序

获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class Test5 { public static void main(String[] args) th

Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息)

Android wifi对象属性及简易Demo 本章介绍Android开发中WiFi热点和WiFi属性的获取,介绍WiFi的名称.状态等属性以及获取周围WiFi热点的方法. 一.怎样获取wifi对象并进行操作 要操作 WIFI 设备,需要先获取 Context.getSystemService(Context.WIFI_SERVICE)获取WifiManager对象,并通过这个对象来管理WIFI设备. addNetwork(WifiConfiguration config) 添加一个config

java获取cpu、内存、硬盘信息

1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge.net/projects/sigar/files/latest/download?source=files 解压压缩包,将lib下sigar.jar导入eclipse的CLASSPATH中,再将sigar-x86-winnt.dll存入Java的bin目录即可. 2 代码示例 /**    * @

java获取https网站证书

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.security.KeyStore; import java

Java获取一个路径下指定后缀名的所有文件

方法一: http://blog.csdn.net/zjx102938/article/details/8114114 import java.io.File; import java.util.ArrayList; import java.util.List; public class FileFind { public static void main(String[] args) { String path = "D:\\Test"; List data=new ArrayLis

MySQL---数据库从入门走向大神系列(十一)-Java获取数据库/结果集的元信息、将数据表写入excel表格

数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据. 元数据是描述数据仓库内数据的结构和建立方法的数据. 存储的数据是什么类型,什么驱动等等,这些描述数据的数据,就是元数据! 准备: package cn.hncu.pool3; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; i

关于使用纯java获取http url请求返回的信息

话不多说 , 直接上代码 (没有依赖jar) 1 import java.io.ByteArrayOutputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.OutputStream; 5 import java.net.HttpURLConnection; 6 import java.net.URL; 7 8 9 public class HttpTest { 10 11

从AppStore获取一个iOS App的版本信息

做了一个iOS下的App,普通情况下,AppStore会提示更新的,但是用户如果没开推送,或者不打开AppStore,是不知道有新版本的,所以要做版本更新提醒,当AppStore上有新的版本时,提示用户进行更新.如何关键是如何获得AppStore上的版本信息,可以通过苹果提供的REST接口进行查询. NSString *urlStr = [[NSString alloc] initWithFormat:@"http://itunes.apple.com/lookup?id=%@",@&