不得不说第三方包才是快速实现程序的关键

Maven

插件Maven-search

方便简单的利用Maven管理第三方包

image.png

参数解析

com.beust.jcommander.Parameter

利用注解+反射机制还是很简洁的

  1. package org.sec.config;
  2. import com.beust.jcommander.Parameter;
  3. public class Command {
  4. @Parameter(names = {"-h", "--help"}, description = "Help Info", help = true)
  5. public boolean help;
  6. @Parameter(names = {"-u"},description = "Target Url")
  7. public String url;
  8. @Parameter(names = {"-k"},description = "Target Key")
  9. public String targetKey;
  10. }
  1. import com.beust.jcommander.JCommander;
  2. import org.sec.config.Command;
  3. Command command = new Command();
  4. JCommander jc = JCommander.newBuilder().addObject(command).build();
  5. jc.parse(args);
  6. if (command.help) {
  7. jc.usage();
  8. return;
  9. }
  10. if (command.url == null || command.url.equals("")) {
  11. return;
  12. }
  13. String url = command.url;

HTTP请求

com.github.kevinsawicki.http

感觉还是比较方便

  1. package Main;
  2. import com.github.kevinsawicki.http.HttpRequest;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. public class Main {
  6. public static void setProxy(boolean proxy) {
  7. if (proxy){
  8. HttpRequest.proxyHost("127.0.0.1");
  9. HttpRequest.proxyPort(8080);
  10. }
  11. }
  12. public static void main(String[] args) {
  13. //代理
  14. setProxy(false);
  15. //设置header头
  16. Map<String,String> Headers=new HashMap<String,String>();
  17. Headers.put("Cookie","RK=429ojE4A1p; ptcz=0dab32db1b9284ca7c7709c011daf934450981ea40e0a9e833b30f9b25299efb; pgv_pvid=8801185994; fqm_pvqid=a1642ff7-6dc0-4415-871a-113eb5180925; fqm_sessionid=9b75fa82-b8eb-4bf4-850a-f26c4da641e9; pgv_info=ssid=s3168114344; ts_uid=8507159015; _qpsvr_localtk=0.8180174642746458; ts_last=y.qq.com/; ts_refer=cn.bing.com/");
  18. Headers.put("Content-Length","661");
  19. Headers.put("Pragma","no-cache");
  20. Headers.put("Cache-Control","no-cache");
  21. Headers.put("Sec-Ch-Ua","\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"");
  22. Headers.put("Accept","application/json");
  23. Headers.put("Content-Type","application/x-www-form-urlencoded");
  24. Headers.put("Sec-Ch-Ua-Mobile","?0");
  25. Headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36");
  26. Headers.put("Sec-Ch-Ua-Platform","\"Windows\"");
  27. Headers.put("Origin","https://y.qq.com");
  28. Headers.put("Sec-Fetch-Site","same-site");
  29. Headers.put("Sec-Fetch-Mode","cors");
  30. Headers.put("Sec-Fetch-Dest","empty");
  31. Headers.put("Referer","https://y.qq.com/");
  32. Headers.put("Accept-Encoding","gzip, deflate");
  33. Headers.put("Accept-Language","zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6");
  34. Headers.put("Connection","close");
  35. String Url= "http://u.y.qq.com/cgi-bin/musics.fcg?_=1647737559657&sign=zzb4b5adf4emghrndbrslfbaaohgt85qd8c2607f";
  36. String Data = "{"comm":{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":0,"g_tk_new_20200303":5381,"g_tk":5381},"req_1":{"module":"music.musicHall.MusicHallPlatform","method":"GetFocus","param":{}},"req_2":{"module":"newalbum.NewAlbumServer","method":"get_new_album_area","param":{}},"req_3":{"module":"newalbum.NewAlbumServer","method":"get_new_album_info","param":{"area":1,"sin":0,"num":20}},"req_4":{"module":"musicToplist.ToplistInfoServer","method":"GetAll","param":{}},"req_5":{"module":"MvService.MvInfoProServer","method":"GetNewMv","param":{"style":0,"tag":0,"start":0,"size":40}}}";
  37. //发送数据包
  38. HttpRequest res = HttpRequest.post(Url).headers(Headers).send(Data).followRedirects(false).readTimeout(5000);
  39. System.out.println(String.format("StatCode:%s",res.code()));
  40. System.out.println(String.format("Response:%s",res.body()));
  41. }
  42. }

swing美化

com.formdev.flatlaf

一句话美化

  1. FlatLightLaf.setup();
  2. //按照自己喜欢的样式去setup即可

Java爬虫类

Jsoup

  1. import org.jsoup.Jsoup;
  2. import org.jsoup.nodes.Document;
  3. import java.io.IOException;
  4. public class Main {
  5. public static void main(String[] args) {
  6. Document document = null;
  7. try {
  8. //从URL加载文档,使用Jsoup.connect()方法从URL加载HTML
  9. document = Jsoup.connect("https://www.baidu.com/").get();
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }
  13. //调用document.title()方法获取HTML页面的标题
  14. System.out.println(document.title());
  15. }
  16. }

还可以携带参数

  1. Document doc = Jsoup.connect("http://example.com")
  2. .data("query", "Java")
  3. .userAgent("Mozilla")
  4. .cookie("auth", "token")
  5. .timeout(3000)
  6. .post();

获取favicon

  1. import com.github.kevinsawicki.http.HttpRequest;
  2. import org.jsoup.Jsoup;
  3. import org.jsoup.nodes.Document;
  4. import org.jsoup.nodes.Element;
  5. import java.io.IOException;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. public class Main {
  9. public static void main(String[] args) {
  10. Document document = null;
  11. String favImage = "Not Found";
  12. String url = "https://i.hacking8.com/";
  13. try {
  14. document = Jsoup.connect(url).get();
  15. Element element = document.head().select("link[href~=.*\\.(ico|png)]").first();
  16. if (element == null)
  17. {
  18. element = document.head().select("meta[itemprop=image]").first();
  19. if (element != null)
  20. {
  21. favImage = element.attr("content");
  22. }
  23. }
  24. else
  25. {
  26. favImage = element.attr("href");
  27. }
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
  31. System.out.println(document.title());
  32. if (favImage.contains("Not")){
  33. System.out.println("在源代码中没有找到图标");
  34. Map<String,String> Headers=new HashMap<String,String>();
  35. Headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36");
  36. HttpRequest res = HttpRequest.post(url+"/favicon.ico").headers(Headers).followRedirects(false).readTimeout(5000);
  37. System.out.println(res.code());
  38. System.out.println(url+"/favicon.ico");
  39. if (res.code()==200){
  40. System.out.println(url+"/favicon.ico");
  41. }
  42. }else {
  43. System.out.println(url+favImage);
  44. }
  45. }
  46. }

获取所有链接

  1. import org.jsoup.Jsoup;
  2. import org.jsoup.nodes.Document;
  3. import org.jsoup.nodes.Element;
  4. import org.jsoup.select.Elements;
  5. import java.io.IOException;
  6. public class Main{
  7. public static void main(String[] args) {
  8. Document document;
  9. try {
  10. document = Jsoup.connect("https://i.hacking8.com/").get();
  11. Elements links = document.select("a[href]");
  12. for (Element link : links)
  13. {
  14. System.out.println("link : " + link.attr("href"));
  15. System.out.println("text : " + link.text());
  16. }
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }

多注重学习select过滤器