Skip to content

Commit a04f16d

Browse files
committed
add JetKais proxy repo + sock5.txt provider
1 parent 021981d commit a04f16d

13 files changed

+168
-77
lines changed

sock5.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
188.168.27.71:38071

src/main/java/jay/syi/business/proxy/RandomProxyDistributionStrategy.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import jay.syi.model.ProxyDetails;
66
import org.springframework.stereotype.Component;
77

8-
import java.util.ArrayList;
98
import java.util.Collections;
109
import java.util.List;
1110

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package jay.syi.business.proxy.provider;
2+
3+
import jay.syi.interfaces.proxy.IProxyListProvider;
4+
import jay.syi.model.ProxyDetails;
5+
import org.apache.logging.log4j.LogManager;
6+
import org.apache.logging.log4j.Logger;
7+
import org.springframework.beans.factory.InitializingBean;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
public abstract class BaseProxyProvider implements IProxyListProvider, InitializingBean {
13+
14+
protected static Logger LOGGER = LogManager.getLogger(BaseProxyProvider.class);
15+
private List<ProxyDetails> proxyDetails = new ArrayList<>();
16+
17+
@Override
18+
public void add(ProxyDetails details) {
19+
proxyDetails.add(details);
20+
}
21+
22+
@Override
23+
public List<ProxyDetails> get() {
24+
return proxyDetails;
25+
}
26+
27+
@Override
28+
public void afterPropertiesSet() {
29+
try {
30+
load();
31+
} catch(Exception e) {
32+
LOGGER.error(e);
33+
}
34+
}
35+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package jay.syi.business.proxy.provider;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import jay.syi.model.JetKaisProxyModel;
5+
import jay.syi.model.ProxyDetails;
6+
import jay.syi.model.ProxyType;
7+
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
8+
import org.springframework.context.annotation.Scope;
9+
import org.springframework.stereotype.Component;
10+
import java.io.IOException;
11+
import java.net.URL;
12+
13+
@Component("jet-kai-proxy-provider")
14+
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
15+
public class JetKaiProxyProvider extends BaseProxyProvider {
16+
17+
private final String JET_KAI_PROXY_REPO_URL = "https://raw.githubusercontent.com/KaiBurton/free-proxies-autoupdated/main/proxies-socks4%2B5-beautify.json";
18+
19+
@Override
20+
public void load() throws IOException {
21+
var objectMapper = new ObjectMapper();
22+
JetKaisProxyModel jetKaiProxies =
23+
objectMapper.readValue(new URL(JET_KAI_PROXY_REPO_URL), objectMapper
24+
.getTypeFactory()
25+
.constructType(JetKaisProxyModel.class));
26+
for(var proxy : jetKaiProxies.getSocks4()) {
27+
ProxyDetails proxyDetails = getProxyDetails(ProxyType.SOCKS_4, proxy);
28+
add(proxyDetails);
29+
}
30+
31+
for(var proxy : jetKaiProxies.getSocks5()) {
32+
ProxyDetails proxyDetails = getProxyDetails(ProxyType.SOCKS_5, proxy);
33+
add(proxyDetails);
34+
}
35+
36+
LOGGER.info("Loaded {} proxies from JetKai's repo", get().size());
37+
}
38+
39+
private ProxyDetails getProxyDetails(ProxyType type, String proxyData) {
40+
ProxyDetails proxyDetails = new ProxyDetails();
41+
String[] data = proxyData.split(":");
42+
proxyDetails.setProxyType(type);
43+
proxyDetails.setIp(data[0]);
44+
proxyDetails.setPort(Integer.parseInt(data[1]));
45+
return proxyDetails;
46+
}
47+
}
Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,26 @@
11
package jay.syi.business.proxy.provider;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import jay.syi.interfaces.proxy.IProxyListProvider;
54
import jay.syi.model.ProxyDetails;
65
import jay.syi.model.ProxyDetailsApi;
76
import jay.syi.model.ProxyType;
87
import org.apache.logging.log4j.LogManager;
98
import org.apache.logging.log4j.Logger;
10-
import org.springframework.beans.factory.InitializingBean;
119
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
1210
import org.springframework.context.annotation.Scope;
1311
import org.springframework.stereotype.Component;
1412

15-
import java.io.IOException;
1613
import java.net.URL;
17-
import java.util.ArrayList;
1814
import java.util.List;
1915
import java.util.stream.Collectors;
2016

2117
@Component("api-proxy")
2218
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
23-
public class ProxyApiListProvider implements IProxyListProvider, InitializingBean {
19+
public class ProxyApiListProvider extends BaseProxyProvider {
2420

25-
private List<ProxyDetails> proxyDetails = new ArrayList<>();
2621
private static final Logger LOGGER = LogManager.getLogger(ProxyApiListProvider.class);
2722
private static final String API_URL = "https://www.proxyscan.io/api/proxy?type=socks4,socks5&limit=1000&lastCheck=3600";
2823

29-
@Override
30-
public void add(ProxyDetails details) {
31-
proxyDetails.add(details);
32-
}
33-
34-
@Override
35-
public List<ProxyDetails> get() {
36-
return proxyDetails;
37-
}
38-
3924
@Override
4025
public void load() {
4126
var objectMapper = new ObjectMapper();
@@ -52,16 +37,11 @@ public void load() {
5237
details.setProxyType(t.getType().stream().findFirst().orElse(null).equalsIgnoreCase("SOCKS4") ? ProxyType.SOCKS_4 : ProxyType.SOCKS_5);
5338
return details;
5439
}).collect(Collectors.toList());
55-
this.proxyDetails.addAll(proxyDetails);
40+
this.get().addAll(proxyDetails);
5641

5742
LOGGER.info("Loaded {} proxies", loadedProxyDetails.size());
5843
} catch (Exception e) {
5944
LOGGER.error(e);
6045
}
6146
}
62-
63-
@Override
64-
public void afterPropertiesSet() {
65-
load();
66-
}
6747
}
Lines changed: 26 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,40 @@
11
package jay.syi.business.proxy.provider;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import jay.syi.interfaces.proxy.IProxyListProvider;
54
import jay.syi.model.ProxyDetails;
6-
import org.apache.logging.log4j.LogManager;
7-
import org.apache.logging.log4j.Logger;
8-
import org.springframework.beans.factory.InitializingBean;
95
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
106
import org.springframework.context.annotation.Scope;
117
import org.springframework.stereotype.Component;
128

139
import java.io.File;
14-
import java.util.ArrayList;
1510
import java.util.List;
1611

1712
@Component("file-proxy")
1813
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
19-
public class ProxyFileListProvider implements IProxyListProvider, InitializingBean {
20-
private List<ProxyDetails> proxyDetails = new ArrayList<>();
21-
private static final Logger LOGGER = LogManager.getLogger(ProxyFileListProvider.class);
22-
23-
@Override
24-
public void add(ProxyDetails details) {
25-
proxyDetails.add(details);
26-
}
27-
28-
@Override
29-
public List<ProxyDetails> get() {
30-
return proxyDetails;
31-
}
32-
33-
@Override
34-
public void load() {
35-
var objectMapper = new ObjectMapper();
36-
var proxyFile = new File("./sock5.json");
37-
38-
if (proxyFile.exists()) {
39-
try {
40-
List<ProxyDetails> loadedProxyDetails =
41-
objectMapper.readValue(proxyFile, objectMapper
42-
.getTypeFactory()
43-
.constructCollectionType(List.class, ProxyDetails.class));
44-
45-
LOGGER.info("Loaded {} proxies", loadedProxyDetails.size());
46-
proxyDetails.addAll(loadedProxyDetails);
47-
} catch (Exception e) {
48-
LOGGER.error(e);
49-
}
50-
}
51-
}
52-
53-
@Override
54-
public void afterPropertiesSet() {
55-
load();
56-
}
14+
public class ProxyFileListProvider extends BaseProxyProvider {
15+
@Override
16+
public void load() {
17+
var objectMapper = new ObjectMapper();
18+
var proxyFile = new File("./sock5.json");
19+
20+
if (!proxyFile.exists()) {
21+
return;
22+
}
23+
try {
24+
List<ProxyDetails> loadedProxyDetails =
25+
objectMapper.readValue(proxyFile, objectMapper
26+
.getTypeFactory()
27+
.constructCollectionType(List.class, ProxyDetails.class));
28+
29+
LOGGER.info("Loaded {} proxies", loadedProxyDetails.size());
30+
get().addAll(loadedProxyDetails);
31+
} catch (Exception e) {
32+
LOGGER.error(e);
33+
}
34+
}
35+
36+
@Override
37+
public void afterPropertiesSet() {
38+
load();
39+
}
5740
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package jay.syi.business.proxy.provider;
2+
3+
import jay.syi.model.ProxyDetails;
4+
import jay.syi.model.ProxyType;
5+
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
6+
import org.springframework.context.annotation.Scope;
7+
import org.springframework.stereotype.Component;
8+
9+
import java.io.File;
10+
import java.io.FileInputStream;
11+
import java.util.ArrayList;
12+
import java.util.Scanner;
13+
14+
@Component("text-sock5-proxy")
15+
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
16+
public class ProxySock5TextProvider extends BaseProxyProvider {
17+
@Override
18+
public void load() {
19+
File f = new File("./sock5.txt");
20+
if (!f.exists()) {
21+
return;
22+
}
23+
try (Scanner s = new Scanner(new FileInputStream("./sock5.txt"))) {
24+
var proxyDetails = new ArrayList<ProxyDetails>();
25+
while (s.hasNextLine()) {
26+
var lineData = s.nextLine().split(":");
27+
ProxyDetails details = new ProxyDetails();
28+
details.setIp(lineData[0]);
29+
details.setPort(Integer.parseInt(lineData[1]));
30+
details.setProxyType(ProxyType.SOCKS_5);
31+
proxyDetails.add(details);
32+
}
33+
this.get().addAll(proxyDetails);
34+
LOGGER.info("Loaded {} proxies from sock5.txt", proxyDetails.size());
35+
} catch (Exception e) {
36+
LOGGER.error(e);
37+
}
38+
}
39+
}

src/main/java/jay/syi/commands/LoginCommand.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package jay.syi.commands;
22

33
import jay.syi.business.client.RSClientConnection;
4-
import jay.syi.business.proxy.CopiedProxyDistributionStrategy;
54
import jay.syi.interfaces.client.IProxyDistributionStrategy;
65
import jay.syi.interfaces.client.IStatefulLoginProvider;
76
import jay.syi.interfaces.proxy.IProxyHandlerFactory;

src/main/java/jay/syi/interfaces/proxy/IProxyHandlerFactory.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package jay.syi.interfaces.proxy;
22

3-
import io.netty.channel.ChannelHandler;
43
import io.netty.handler.proxy.ProxyHandler;
5-
import io.netty.handler.proxy.Socks5ProxyHandler;
64
import jay.syi.model.ProxyDetails;
7-
import jay.syi.model.ProxyType;
85

96
public interface IProxyHandlerFactory {
107
ProxyHandler create(ProxyDetails details);

src/main/java/jay/syi/interfaces/proxy/IProxyListProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import jay.syi.model.ProxyDetails;
44

5-
import java.net.MalformedURLException;
5+
import java.io.IOException;
66
import java.util.List;
77

88
public interface IProxyListProvider {
99
void add(ProxyDetails details);
1010

1111
List<ProxyDetails> get();
1212

13-
void load();
13+
void load() throws IOException;
1414
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package jay.syi.model;
2+
3+
import java.util.List;
4+
5+
public class JetKaisProxyModel {
6+
private List<String> socks4;
7+
private List<String> socks5;
8+
9+
public List<String> getSocks4() {
10+
return socks4;
11+
}
12+
13+
public List<String> getSocks5() {
14+
return socks5;
15+
}
16+
}

src/main/java/jay/syi/model/LoginDetails.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package jay.syi.model;
22

3-
import java.util.Objects;
4-
53
public class LoginDetails {
64
private final String username;
75
private final String password;

src/main/java/jay/syi/model/ProxyDetails.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package jay.syi.model;
22

3-
import com.fasterxml.jackson.annotation.JsonProperty;
4-
import io.netty.handler.codec.socks.SocksAddressType;
5-
63
public class ProxyDetails {
74
private ProxyType proxyType = ProxyType.SOCKS_5;
85
private String username;

0 commit comments

Comments
 (0)