Skip to content

Commit

Permalink
【功能问题】 切换源为api.k780.com
Browse files Browse the repository at this point in the history
【提交说明】 切换源为api.k780.com
【提交人】 何国健

Signed-off-by: 何国健 <[email protected]>
  • Loading branch information
solorwong committed Apr 20, 2022
1 parent 98e1476 commit 11a3426
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 103 deletions.
8 changes: 7 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>


</dependencies>
Expand Down Expand Up @@ -99,5 +105,5 @@
</plugin>
</plugins>
</build>

</project>
19 changes: 11 additions & 8 deletions src/main/java/com/sololn/fastergithub/Starter.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,22 @@
import java.util.Map;

/**
* @ClassName starter
* @Description springboot 启动时执行
* @Author HeGuojian
* @Date 2021/8/30 17:02
* @Version 1.0
**/
** springboot 启动时执行
* */
@Component
public class Starter implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
String url = "https://myssl.com/api/v1/tools/dns_query?qtype=1&host=";
String params = "qmode=-1";
//String url = "https://myssl.com/api/v1/tools/dns_query?qtype=1&host=";
Path outPath = Paths.get(System.getProperty("user.dir") ,"hosts");
String queryUrl = IpUtil.readRequestUrlFromDom("https://www.nowapi.com/api/dns.a");
queryUrl = queryUrl.replaceAll("&amp;", "&");
// http://api.k780.com/?app=dns.a&domain=www.qq.com&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json
int start = queryUrl.indexOf("&");
int end = queryUrl.indexOf("&", start + 1);
String url = queryUrl.substring(0, start) + "&domain=";
String params = queryUrl.substring(end + 1 );
//Map<String, String> stringStringMap = IpUtil.readIpMap(url, params);

Map<String, String> stringStringMap = IpUtil.readIpMap(url, params);
HostUtil.toFile(stringStringMap, outPath);
Expand Down
77 changes: 0 additions & 77 deletions src/main/java/com/sololn/fastergithub/util/Inet4Address.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,81 +79,4 @@ public static String sendGet(String url) {
}
return result.toString();
}



/*public static String getIpFromJson(String url){
return sendGet(url);
}
public static Map<String, String> getIps(){
String[] urls = {"alive.github.com",
"live.github.com",
"github.githubassets.com",
"central.github.com",
"desktop.githubusercontent.com",
"assets-cdn.github.com",
"camo.githubusercontent.com",
"github.map.fastly.net",
"github.global.ssl.fastly.net",
"gist.github.com",
"github.io",
"github.com",
"github.blog",
"api.github.com",
"raw.githubusercontent.com",
"user-images.githubusercontent.com",
"favicons.githubusercontent.com",
"avatars5.githubusercontent.com",
"avatars4.githubusercontent.com",
"avatars3.githubusercontent.com",
"avatars2.githubusercontent.com",
"avatars1.githubusercontent.com",
"avatars0.githubusercontent.com",
"avatars.githubusercontent.com",
"codeload.github.com",
"github-cloud.s3.amazonaws.com",
"github-com.s3.amazonaws.com",
"github-production-release-asset-2e65be.s3.amazonaws.com",
"github-production-user-asset-6210df.s3.amazonaws.com",
"github-production-repository-file-5c1aeb.s3.amazonaws.com",
"githubstatus.com",
"github.community",
"media.githubusercontent.com"};
Map<String, String> ips = new HashMap<>();
for (String s : urls){
String response = Inet4Address.sendGet(s);
*//*String ip = Inet4Address.getIpFromStr(response);
if (null == ip){
continue;
}*//*
if ("".equals(response)){
continue;
}
logger.info("final ip is {}",response);
ips.put(s, response);
}
return ips;
}
public static String getIpFromStr (String response){
String regEx = "\\d{0,3}\\.\\d{0,3}\\.\\d{0,3}\\.\\d{0,3}";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher;
if (response.startsWith("<!DOCTYPE")) {
int i = response.indexOf("<th>IP");
String line = response.substring(i, i + 100);
matcher = pattern.matcher(line);
if (matcher.find()) {
return matcher.group();
} else {
int j = response.indexOf("<li><a href=\"https://www.ipaddress.com/ipv4");
String line2 = response.substring(j, j + 100);
matcher = pattern.matcher(line2);
if (matcher.find()) {
return matcher.group();
}
}
}
return null;
}
*/
}
54 changes: 38 additions & 16 deletions src/main/java/com/sololn/fastergithub/util/IpUtil.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
package com.sololn.fastergithub.util;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
Expand Down Expand Up @@ -35,25 +41,41 @@ public static Map<String, String> readIpMapFromHttp(List<String> sources, String
Map<String, String> ipMap = new HashMap<>();
List<String> error = new ArrayList<>();
sources.forEach(u -> {
try {
StringBuilder url = new StringBuilder();
url.append(queryUrl).append(u).append("&");
Optional<String> reduce = Arrays.stream(params).reduce((x, y) -> x +
"&" + y);
reduce.ifPresent(url::append);
String res = Inet4Address.sendGet(url.toString());
String ipFromJson = JsonUtil.getIpFromJson(res);
if (StringUtils.isEmpty(ipFromJson)){
log.info("source {} there is no available ip", u);
error.add(u);
return;
}
ipMap.put(u, ipFromJson);
} catch (IOException e) {
log.error(e.getMessage());
StringBuilder url = new StringBuilder();
url.append(queryUrl).append(u).append("&");
Optional<String> reduce = Arrays.stream(params).reduce((x, y) -> x +
"&" + y);
reduce.ifPresent(url::append);
String res = Inet4Address.sendGet(url.toString());
//String ipFromJson = JsonUtil.getIpFromJson(res);
JSONObject result = JSONObject.parseObject(res).getJSONObject("result");
String a = result.getString("a");
String ipFromJson = a.split(",")[0];
if (StringUtils.isEmpty(ipFromJson)){
log.info("source {} there is no available ip", u);
error.add(u);
return;
}
ipMap.put(u, ipFromJson);
});
log.error("error: {}",error.toString());
return ipMap;
}

public static String readRequestUrlFromDom(String url) {
try {
URL realUrl = new URL(url);
Document document = Jsoup.parse(realUrl, 10000);
Elements elements = document.select("a");
Elements elementsByAttributeValue = document.getElementsByAttributeValue("target", "_blank");
for (Element element : elementsByAttributeValue) {
if (element.attr("href").contains("api.k780.com")) {
return element.html();
}
}
} catch (IOException e) {
log.error(e.getMessage());
}
return "";
}
}
2 changes: 1 addition & 1 deletion src/main/resources/urls.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ github-production-user-asset-6210df.s3.amazonaws.com
github-production-repository-file-5c1aeb.s3.amazonaws.com
githubstatus.com
github.community
media.githubusercontent.com
media.githubusercontent.com

0 comments on commit 11a3426

Please sign in to comment.