Skip to content

Commit 0dd952a

Browse files
kohlerpop1jwdeveloper
authored andcommitted
Push for proxy test pt 4!
1 parent af4f2b4 commit 0dd952a

File tree

6 files changed

+47
-26
lines changed

6 files changed

+47
-26
lines changed

API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/ProxyClientSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
@Setter
3434
public class ProxyClientSettings implements Iterator<ProxyData>
3535
{
36-
private boolean enabled;
36+
private boolean enabled, lastSuccess;
3737
private Rotation rotation = Rotation.CONSECUTIVE;
3838
private final List<ProxyData> proxyList = new ArrayList<>();
3939
private int index = 0;
@@ -65,6 +65,8 @@ public boolean hasNext() {
6565
@Override
6666
public ProxyData next()
6767
{
68+
if (lastSuccess)
69+
return proxyList.get(index);
6870
var nextProxy = switch (rotation)
6971
{
7072
case CONSECUTIVE -> {

Client/src/main/java/io/github/jwdeveloper/tiktok/http/HttpClientFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@ public HttpClientBuilder client(String url) {
3737

3838
//Does not contains default httpClientSettings, Params, headers, etd
3939
public HttpClientBuilder clientEmpty(String url) {
40-
4140
var settings = new HttpClientSettings();
4241
settings.setProxyClientSettings(liveClientSettings.getHttpSettings().getProxyClientSettings());
43-
return new HttpClientBuilder(url,settings);
42+
return new HttpClientBuilder(url, settings);
4443
}
4544
}

Client/src/main/java/io/github/jwdeveloper/tiktok/http/HttpProxyClient.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,15 @@ public Optional<HttpResponse<byte[]>> handleHttpProxyRequest() {
6666

6767
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
6868
if (response.statusCode() != 200) {
69+
proxySettings.setLastSuccess(false);
6970
continue;
7071
}
72+
proxySettings.setLastSuccess(true);
7173
return Optional.of(response);
7274
} catch (HttpConnectTimeoutException | ConnectException e) {
7375
if (proxySettings.isAutoDiscard())
7476
proxySettings.remove();
77+
proxySettings.setLastSuccess(false);
7578
} catch (Exception e) {
7679
throw new TikTokLiveRequestException(e);
7780
}
@@ -92,10 +95,9 @@ public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}
9295

9396
while (proxySettings.hasNext()) {
9497
try {
95-
var proxyData = proxySettings.next();
96-
Proxy proxy = new Proxy(Proxy.Type.SOCKS, proxyData.toSocketAddress());
98+
Proxy proxy = new Proxy(Proxy.Type.SOCKS, proxySettings.next().toSocketAddress());
9799

98-
System.err.println("Attempting connection to "+ url +" with proxy: "+proxyData);
100+
System.err.println("Connecting to "+ url);
99101
HttpsURLConnection socksConnection = (HttpsURLConnection) url.openConnection(proxy);
100102
socksConnection.setSSLSocketFactory(sc.getSocketFactory());
101103
socksConnection.setConnectTimeout(httpClientSettings.getTimeout().toMillisPart());
@@ -113,11 +115,13 @@ public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}
113115

114116
var response = createHttpResponse(body, toUrl(), responseInfo);
115117

118+
proxySettings.setLastSuccess(true);
116119
return Optional.of(response);
117120
} catch (SocketException | SocketTimeoutException e) {
118121
e.printStackTrace();
119122
if (proxySettings.isAutoDiscard())
120123
proxySettings.remove();
124+
proxySettings.setLastSuccess(false);
121125
} catch (Exception e) {
122126
throw new TikTokLiveRequestException(e);
123127
}

Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
import io.github.jwdeveloper.tiktok.live.LiveClient;
3232
import org.java_websocket.client.WebSocketClient;
3333

34+
import javax.net.ssl.*;
3435
import java.net.Proxy;
36+
import java.security.cert.X509Certificate;
3537
import java.util.HashMap;
3638

3739
public class TikTokWebSocketClient implements SocketClient {
@@ -68,11 +70,11 @@ public void start(LiveConnectionData.Response connectionData, LiveClient liveCli
6870
tikTokEventHandler,
6971
liveClient);
7072

71-
ProxyClientSettings proxyClientSettings = clientSettings.getHttpSettings().getProxyClientSettings();
72-
73-
if (proxyClientSettings.isEnabled())
74-
connectProxy(proxyClientSettings);
75-
else
73+
// ProxyClientSettings proxyClientSettings = clientSettings.getHttpSettings().getProxyClientSettings();
74+
//
75+
// if (proxyClientSettings.isEnabled())
76+
// connectProxy(proxyClientSettings);
77+
// else
7678
connectDefault();
7779
}
7880

@@ -105,6 +107,15 @@ public void connectProxy(ProxyClientSettings proxySettings) {
105107
public boolean tryProxyConnection(ProxyClientSettings proxySettings, ProxyData proxyData) {
106108
webSocketClient.setProxy(new Proxy(proxySettings.getType(), proxyData.toSocketAddress()));
107109
try {
110+
if (proxySettings.getType() == Proxy.Type.SOCKS) {
111+
SSLContext sc = SSLContext.getInstance("SSL");
112+
sc.init(null, new TrustManager[]{new X509TrustManager() {
113+
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {}
114+
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}
115+
public X509Certificate[] getAcceptedIssuers() { return null; }
116+
}}, null);
117+
webSocketClient.setSocketFactory(sc.getSocketFactory());
118+
}
108119
webSocketClient.connect();
109120
return true;
110121
} catch (Exception e)
@@ -114,7 +125,7 @@ public boolean tryProxyConnection(ProxyClientSettings proxySettings, ProxyData p
114125
}
115126

116127
public void stop() {
117-
if (isConnected && webSocketClient != null) {
128+
if (isConnected && webSocketClient != null && webSocketClient.isOpen()) {
118129
webSocketClient.closeConnection(0, "");
119130
}
120131
webSocketClient = null;

Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketListener.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,18 @@
2323
package io.github.jwdeveloper.tiktok.websocket;
2424

2525
import com.google.protobuf.ByteString;
26-
import io.github.jwdeveloper.tiktok.data.events.TikTokConnectedEvent;
27-
import io.github.jwdeveloper.tiktok.data.events.TikTokDisconnectedEvent;
28-
import io.github.jwdeveloper.tiktok.data.events.TikTokErrorEvent;
26+
import io.github.jwdeveloper.tiktok.*;
27+
import io.github.jwdeveloper.tiktok.data.events.*;
2928
import io.github.jwdeveloper.tiktok.exceptions.TikTokProtocolBufferException;
30-
import io.github.jwdeveloper.tiktok.TikTokLiveEventHandler;
31-
import io.github.jwdeveloper.tiktok.TikTokLiveMessageHandler;
3229
import io.github.jwdeveloper.tiktok.live.LiveClient;
33-
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastPushFrame;
34-
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse;
30+
import io.github.jwdeveloper.tiktok.messages.webcast.*;
3531
import org.java_websocket.client.WebSocketClient;
3632
import org.java_websocket.drafts.Draft_6455;
3733
import org.java_websocket.handshake.ServerHandshake;
3834

3935
import java.net.URI;
4036
import java.nio.ByteBuffer;
41-
import java.util.Map;
42-
import java.util.Optional;
37+
import java.util.*;
4338

4439
public class TikTokWebSocketListener extends WebSocketClient {
4540

@@ -103,8 +98,9 @@ public void onOpen(ServerHandshake serverHandshake) {
10398

10499

105100
@Override
106-
public void onClose(int i, String s, boolean b) {
101+
public void onClose(int code, String reason, boolean remote) {
107102
tikTokEventHandler.publish(tikTokLiveClient, new TikTokDisconnectedEvent());
103+
tikTokLiveClient.disconnect();
108104
}
109105

110106
@Override
@@ -144,6 +140,6 @@ private boolean isNotClosing() {
144140

145141
@Override
146142
public void onMessage(String s) {
147-
143+
System.err.println(s);
148144
}
149-
}
145+
}

Examples/src/main/java/io/github/jwdeveloper/tiktok/ProxyExample.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static void main(String[] args) throws Exception {
4040
return new AbstractMap.SimpleEntry<>(split[0], Integer.parseInt(split[1]));
4141
}).toList());
4242

43-
TikTokLive.newClient("boost_grow_live_qc")
43+
TikTokLive.newClient("dash4214")
4444
.configure(clientSettings ->
4545
{
4646
clientSettings.setPrintToConsole(true);
@@ -53,14 +53,23 @@ public static void main(String[] args) throws Exception {
5353
entries.forEach(entry -> proxySettings.addProxy(entry.getKey(), entry.getValue()));
5454
});
5555
})
56+
.onComment((liveClient, event) -> {
57+
liveClient.getLogger().info(event.getUser().getName()+": "+event.getText());
58+
})
5659
.onConnected((liveClient, event) ->
5760
{
5861
liveClient.getLogger().info("Hello world!");
5962
})
63+
.onDisconnected((liveClient, event) ->
64+
{
65+
liveClient.getLogger().info("Goodbye world!");
66+
})
6067
.onError((liveClient, event) ->
6168
{
6269
event.getException().printStackTrace();
6370
})
64-
.buildAndConnect();
71+
.buildAndConnect();
72+
73+
System.in.read();
6574
}
6675
}

0 commit comments

Comments
 (0)