Java爬虫的底层获取模块,构造POC和漏洞检测时常用爬虫抓取或发送测试代码查询目标站点的可疑bug
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.URLConnection;
- import java.net.URL;
- public class Test {
- public static void main(String[] args) {
- gethtml("http://www.baidu.com");
- }
- /**
- * 保存文件
- *
- * @param name
- * 文件名
- * @param Lname
- * 后缀名
- * @param data
- * 数据buffer
- * @return boolean Tuue则保存成功False则保存失败
- */
- public static boolean save(String name, String Lname, String data) {
- // 构造文件名
- File html = new File("./" + name + "." + Lname);
- try {
- // 如果该文件存在则新建一个
- if (!html.exists()) {
- // 新建文件
- html.createNewFile();
- }
- // 通过绝对路径打开一个文件写入
- FileWriter fw = new FileWriter(html.getAbsoluteFile());
- // 将buffer内容写入到文件中
- BufferedWriter bw = new BufferedWriter(fw);
- // 写入buffer的数据
- bw.write(data);
- // 关闭文件读写
- bw.close();
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- /**
- * 爬取目标源代码
- *
- * @param target
- * 目标URL
- */
- public static String getHtml(String target) {
- // 初始化返回字符串
- String result = "";
- // 初始化buffer
- BufferedReader in = null;
- try {
- // 构造URL对象
- URL url_address = new URL(target);
- // 打开连接
- URLConnection get_url = url_address.openConnection();
- // 构造http连接头
- get_url.setRequestProperty("accept", "*/*");
- get_url.setRequestProperty("connection", "Keep-Alive");
- get_url.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
- // 连接
- get_url.connect();
- // 读取输出的buffer流
- in = new BufferedReader(new InputStreamReader(get_url.getInputStream()));
- // 初始化行
- String line;
- // 循环读取每一行
- while ((line = in.readLine()) != null) {
- // 构造返回字符串
- result += "\n" + line;
- }
- // 输出返回字符串
- System.out.println(result);
- } catch (Exception e) {
- // 抛出HTTP连接异常
- e.printStackTrace();
- } finally {
- // 如果in读取到数据则关闭读写
- if (in != null) {
- try {
- in.close();
- } catch (Exception e2) {
- // 抛出文件读写异常
- e2.printStackTrace();
- }
- }
- }
- // 返回站点源代码
- return result;
- }
- }
来源: https://www.oschina.net/code/snippet_2693731_58773