blob: 6251d1e8b0abebd80ec5dcfbe983fff3c993bd00 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
package org.openecomp.sdc.ci.tests.execute.setup;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.SocketAddress;
import java.net.URI;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import org.slf4j.LoggerFactory;
import com.aventstack.extentreports.ExtentTest;
import com.github.markusbernhardt.proxy.ProxySearch;
import com.github.markusbernhardt.proxy.ProxySearch.Strategy;
import com.github.markusbernhardt.proxy.util.PlatformUtil;
import com.github.markusbernhardt.proxy.util.PlatformUtil.Platform;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import net.lightbody.bmp.BrowserMobProxyServer;
public class MobProxy {
private static HashMap<Long, BrowserMobProxyServer> mobProxyServerMap = new HashMap<Long, BrowserMobProxyServer>();
public static InetSocketAddress localProxyAddress = getProxy();
public static InetSocketAddress getProxy(){
setLogger();
ProxySearch proxySearch = new ProxySearch();
// proxySearch.addStrategy(Strategy.JAVA);
// proxySearch.addStrategy(Strategy.BROWSER);
// proxySearch.addStrategy(Strategy.OS_DEFAULT);
// proxySearch.addStrategy(Strategy.ENV_VAR);
if (PlatformUtil.getCurrentPlattform() == Platform.WIN) {
proxySearch.addStrategy(Strategy.IE);
proxySearch.addStrategy(Strategy.FIREFOX);
proxySearch.addStrategy(Strategy.JAVA);
} else if (PlatformUtil.getCurrentPlattform() == Platform.LINUX) {
proxySearch.addStrategy(Strategy.GNOME);
proxySearch.addStrategy(Strategy.KDE);
proxySearch.addStrategy(Strategy.FIREFOX);
proxySearch.addStrategy(Strategy.ENV_VAR);
return null;
} else {
proxySearch.addStrategy(Strategy.OS_DEFAULT);
}
ProxySelector proxySelector = proxySearch.getProxySelector();
ProxySelector.setDefault(proxySelector);
URI home = URI.create("http://www.google.com");
System.out.println("ProxySelector: " + proxySelector);
System.out.println("URI: " + home);
List<Proxy> proxyList = proxySelector.select(home);
String host = null;
String port = null;
if (proxyList != null && !proxyList.isEmpty()) {
for (Proxy proxy : proxyList) {
System.out.println(proxy);
SocketAddress address = proxy.address();
if (address instanceof InetSocketAddress) {
host = ((InetSocketAddress) address).getHostName();
port = Integer.toString(((InetSocketAddress) address).getPort());
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port);
}
}
}
InetSocketAddress address = new InetSocketAddress(host, Integer.parseInt(port));
return address;
}
// set logger for all classes connected to MobProxy
public static void setLogger() {
LoggerContext lc = (LoggerContext) LoggerFactory. getILoggerFactory();
// lc.getLogger("ROOT").setLevel(Level.DEBUG);
for(Logger logger:lc.getLoggerList()){
logger.setLevel(Level.INFO);
}
}
public static synchronized void setProxyServer() {
BrowserMobProxyServer server = new BrowserMobProxyServer();
server.setTrustAllServers(true);
if (localProxyAddress != null){
server.setChainedProxy(localProxyAddress);
server.start();
} else {
server.start();
// filter firefox requests to mozilla when system proxy is absent
server.blacklistRequests(".*mozilla.*", 200);
}
addProxyServerToPull(Thread.currentThread().getId(), server);
}
public static synchronized BrowserMobProxyServer getPoxyServer() {
return mobProxyServerMap.get(Thread.currentThread().getId());
}
public static void addProxyServerToPull(Long threadId, BrowserMobProxyServer server){
mobProxyServerMap.put(threadId, server);
}
public static synchronized void removePoxyServer() {
if (getPoxyServer() != null){
getPoxyServer().stop();
mobProxyServerMap.remove(Thread.currentThread().getId());
}
}
public static void removeAllProxyServers(){
for(Long threadNumber :mobProxyServerMap.keySet()){
mobProxyServerMap.get(threadNumber).stop();
}
}
}
|