不得不说第三方包才是快速实现程序的关键
Maven
插件Maven-search
方便简单的利用Maven管理第三方包
参数解析
com.beust.jcommander.Parameter
利用注解+反射机制还是很简洁的
package org.sec.config;
import com.beust.jcommander.Parameter;
public class Command {
@Parameter(names = {"-h", "--help"}, description = "Help Info", help = true)
public boolean help;
@Parameter(names = {"-u"},description = "Target Url")
public String url;
@Parameter(names = {"-k"},description = "Target Key")
public String targetKey;
}
import com.beust.jcommander.JCommander;
import org.sec.config.Command;
Command command = new Command();
JCommander jc = JCommander.newBuilder().addObject(command).build();
jc.parse(args);
if (command.help) {
jc.usage();
return;
}
if (command.url == null || command.url.equals("")) {
return;
}
String url = command.url;
HTTP请求
com.github.kevinsawicki.http
感觉还是比较方便
package Main;
import com.github.kevinsawicki.http.HttpRequest;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void setProxy(boolean proxy) {
if (proxy){
HttpRequest.proxyHost("127.0.0.1");
HttpRequest.proxyPort(8080);
}
}
public static void main(String[] args) {
//代理
setProxy(false);
//设置header头
Map<String,String> Headers=new HashMap<String,String>();
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/");
Headers.put("Content-Length","661");
Headers.put("Pragma","no-cache");
Headers.put("Cache-Control","no-cache");
Headers.put("Sec-Ch-Ua","\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"");
Headers.put("Accept","application/json");
Headers.put("Content-Type","application/x-www-form-urlencoded");
Headers.put("Sec-Ch-Ua-Mobile","?0");
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");
Headers.put("Sec-Ch-Ua-Platform","\"Windows\"");
Headers.put("Origin","https://y.qq.com");
Headers.put("Sec-Fetch-Site","same-site");
Headers.put("Sec-Fetch-Mode","cors");
Headers.put("Sec-Fetch-Dest","empty");
Headers.put("Referer","https://y.qq.com/");
Headers.put("Accept-Encoding","gzip, deflate");
Headers.put("Accept-Language","zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6");
Headers.put("Connection","close");
String Url= "http://u.y.qq.com/cgi-bin/musics.fcg?_=1647737559657&sign=zzb4b5adf4emghrndbrslfbaaohgt85qd8c2607f";
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}}}";
//发送数据包
HttpRequest res = HttpRequest.post(Url).headers(Headers).send(Data).followRedirects(false).readTimeout(5000);
System.out.println(String.format("StatCode:%s",res.code()));
System.out.println(String.format("Response:%s",res.body()));
}
}
swing美化
com.formdev.flatlaf
一句话美化
FlatLightLaf.setup();
//按照自己喜欢的样式去setup即可
Java爬虫类
Jsoup
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
Document document = null;
try {
//从URL加载文档,使用Jsoup.connect()方法从URL加载HTML
document = Jsoup.connect("https://www.baidu.com/").get();
} catch (IOException e) {
e.printStackTrace();
}
//调用document.title()方法获取HTML页面的标题
System.out.println(document.title());
}
}
还可以携带参数
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
获取favicon
import com.github.kevinsawicki.http.HttpRequest;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Document document = null;
String favImage = "Not Found";
String url = "https://i.hacking8.com/";
try {
document = Jsoup.connect(url).get();
Element element = document.head().select("link[href~=.*\\.(ico|png)]").first();
if (element == null)
{
element = document.head().select("meta[itemprop=image]").first();
if (element != null)
{
favImage = element.attr("content");
}
}
else
{
favImage = element.attr("href");
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(document.title());
if (favImage.contains("Not")){
System.out.println("在源代码中没有找到图标");
Map<String,String> Headers=new HashMap<String,String>();
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");
HttpRequest res = HttpRequest.post(url+"/favicon.ico").headers(Headers).followRedirects(false).readTimeout(5000);
System.out.println(res.code());
System.out.println(url+"/favicon.ico");
if (res.code()==200){
System.out.println(url+"/favicon.ico");
}
}else {
System.out.println(url+favImage);
}
}
}
获取所有链接
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
public class Main{
public static void main(String[] args) {
Document document;
try {
document = Jsoup.connect("https://i.hacking8.com/").get();
Elements links = document.select("a[href]");
for (Element link : links)
{
System.out.println("link : " + link.attr("href"));
System.out.println("text : " + link.text());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
多注重学习select过滤器