【工具】JAVA请求头Headers工具随机 生成UA 解析headers为map
【工具】JAVA请求头Headers工具随机 生成UA 解析headers为map
随机生成UA
成品
Mozilla/5.0 (Linux; Android 11; Mi 14 Build/TKQ1.221114.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.6827.294 Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240301 MMWEBID/4001 MicroMessenger/8.0.48.2580(0x28003036) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64
随机生成UA用法
UA = Mozilla/5.0 (Linux; Android {Android版本}; {Android手机型号} Build/TKQ1.221114.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/{Chrome内核版本} Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240301 MMWEBID/4001 MicroMessenger/8.0.48.2580(0x28003036) WeChat/arm64 Weixin NetType/{NetType} Language/zh_CN ABI/arm64
UA = StrUtil.format(UA, 随机Ua参数);
解析headers为map
用法
"""
Host: work.weixin.qq.com
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Android WebView";v="122"
sec-ch-ua-mobile: ?1
sec-ch-ua-platform: "Android"
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Linux; Android {Android版本}; {Android手机型号} Build/TKQ1.221114.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/{Chrome内核版本} Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240301 MMWEBID/4001 MicroMessenger/8.0.48.2580(0x28003036) WeChat/arm64 Weixin NetType/{NetType} Language/zh_CN ABI/arm64
x-requested-with: com.tencent.mm
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
cookie: wwrtx.i18n_lan=zh%2Ccn
"""
Map<String, String> 请求头map = WToolHeaders.解析请求头Headers(headers);
Headers工具类完整代码
import org.dromara.hutool.core.collection.ListUtil;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.RandomUtil;
import org.dromara.hutool.json.JSONObject;
import org.dromara.hutool.json.JSONUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* http请求头工具
*/
public class WToolHeaders {
private static List<String> Android版本List = ListUtil.of(
"10", "11", "12", "13", "14"
);
private static List<String> Android手机型号 = ListUtil.of(
"Mi 8",
"Mi 9",
"Mi 10",
"Mi 11",
"Mi 12",
"Mi 13",
"Mi 14"
,"PBEM00"
);
private static List<String> NetType = ListUtil.of(
"4G"
,"5G"
,"WIFI"
);
/**
* 随机生成 UA 用法
UA = Mozilla/5.0 (Linux; Android {Android版本}; {Android手机型号} Build/TKQ1.221114.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/{Chrome内核版本} Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240301 MMWEBID/4001 MicroMessenger/8.0.48.2580(0x28003036) WeChat/arm64 Weixin NetType/{NetType} Language/zh_CN ABI/arm64
UA = StrUtil.format(UA, 随机Ua参数);
*
*
* @return
*/
public static JSONObject get随机Ua参数(){
JSONObject entries = JSONUtil.ofObj();
entries.set("Android版本", getAndroid版本());
entries.set("Android手机型号", getAndroid手机型号());
entries.set("Chrome内核版本", getChrome内核版本());
entries.set("NetType", getNetType());
return entries;
}
public static String getAndroid版本(){
int i = RandomUtil.randomInt(0, Android版本List.size());
return Android版本List.get(i);
}
public static String getAndroid手机型号(){
int i = RandomUtil.randomInt(0, Android手机型号.size());
return Android手机型号.get(i);
}
public static String getNetType(){
int i = RandomUtil.randomInt(0, NetType.size());
return NetType.get(i);
}
public static String getChrome内核版本(){
int A = RandomUtil.randomInt(88, 126);
int B = RandomUtil.randomInt(0, 10);
int C = RandomUtil.randomInt(1000, 9999);
int D = RandomUtil.randomInt(1, 999);
return StrUtil.format("{}.{}.{}.{}", A, B, C, D);
}
/**
用法
"""
Host: work.weixin.qq.com
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Android WebView";v="122"
sec-ch-ua-mobile: ?1
sec-ch-ua-platform: "Android"
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Linux; Android {Android版本}; {Android手机型号} Build/TKQ1.221114.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/{Chrome内核版本} Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240301 MMWEBID/4001 MicroMessenger/8.0.48.2580(0x28003036) WeChat/arm64 Weixin NetType/{NetType} Language/zh_CN ABI/arm64
x-requested-with: com.tencent.mm
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
cookie: wwrtx.i18n_lan=zh%2Ccn
"""
Map<String, String> 请求头map = WToolHeaders.解析请求头Headers(headers);
* @param headers
* @return
*/
public static Map<String, String> 解析请求头Headers(String headers){
Map<String, String> map = new HashMap<>();
String[] split = headers.split("\n");
for (String s : split) {
String[] split1 = s.split(":");
map.put(split1[0].trim(), split1[1].trim());
}
return map;
}
}
依赖
<!-- https://mvnrepository.com/artifact/org.dromara.hutool/hutool-all -->
<dependency>
<groupId>org.dromara.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>6.0.0-M12</version>
</dependency>
java http 请求头 爬虫 抓包