Advertisement
Guest User

gw2 guild roster

a guest
Jun 7th, 2014
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.38 KB | None | 0 0
  1. import java.security.SecureRandom;
  2. import java.security.cert.CertificateException;
  3. import java.security.cert.X509Certificate;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.List;
  7. import java.util.Scanner;
  8.  
  9. import javax.net.ssl.SSLContext;
  10. import javax.net.ssl.TrustManager;
  11. import javax.net.ssl.X509TrustManager;
  12.  
  13. import org.apache.http.HttpResponse;
  14. import org.apache.http.NameValuePair;
  15. import org.apache.http.client.HttpClient;
  16. import org.apache.http.client.entity.UrlEncodedFormEntity;
  17. import org.apache.http.client.methods.HttpGet;
  18. import org.apache.http.client.methods.HttpPost;
  19. import org.apache.http.client.params.ClientPNames;
  20. import org.apache.http.client.params.CookiePolicy;
  21. import org.apache.http.conn.ClientConnectionManager;
  22. import org.apache.http.conn.scheme.Scheme;
  23. import org.apache.http.conn.scheme.SchemeRegistry;
  24. import org.apache.http.conn.ssl.SSLSocketFactory;
  25. import org.apache.http.impl.client.DefaultHttpClient;
  26. import org.apache.http.impl.conn.BasicClientConnectionManager;
  27. import org.apache.http.message.BasicNameValuePair;
  28.  
  29. public class Test {
  30.  
  31.     private String YOUR_USERNAME = "some_email_address";
  32.     private String YOUR_PASSWORD = "some_password";
  33.     private String SOME_GUILD_NAME = "some_guild_name";
  34.    
  35.     private List<Member> fetchGuildMembers() {
  36.         List<Member> guildMembers = new ArrayList<Member>();
  37.  
  38.         HttpClient httpClient = createLoggedInHttpClient(YOUR_USERNAME, YOUR_PASSWORD);
  39.         HttpGet httpGet = new HttpGet("https://leaderboards.guildwars2.com/en/na/achievements/guild/" + SOME_GUILD_NAME);
  40.  
  41.         try {
  42.             HttpResponse response = httpClient.execute(httpGet);
  43.  
  44.             @SuppressWarnings("resource")
  45.             Scanner scanner = new Scanner(response.getEntity().getContent()).useDelimiter("<tr class=");
  46.             scanner.next(); // skip header
  47.             scanner.next(); // skip logged in user
  48.  
  49.             while (scanner.hasNext()) {
  50.                 String tableRow = scanner.next().replaceAll("[\r\n]", " ");
  51.                 Member guildMember = new Member();
  52.                 guildMember.name = tableRow.replaceAll(".*<td class=\"name text\">([^<]*)</td>.*", "$1").trim();
  53.                 guildMember.achievementPoints = Integer.parseInt(tableRow.replaceAll(
  54.                     ".*<td class=\"[^\"]*achievements number\">([^>]*>[^>]*>)([^<]*)</span>.*", "$2").trim());
  55.                 guildMember.lastLoggedInToGame = tableRow.replaceAll(
  56.                     ".*<td class=\"[^\"]*achievements number\">([^>]*>[^>]*>[^>]*>[^>]*>[^S]*Since)([^<]*)</span>.*", "$2").trim();
  57.                 guildMember.lastLoggedInToGame = guildMember.lastLoggedInToGame.replaceAll("&#x2F;", "/");
  58.                 guildMember.homeWorld = tableRow.replaceAll(".*<td class=\"world text\">([^<]*)</td>.*", "$1").trim();
  59.                 guildMembers.add(guildMember);
  60.             }
  61.  
  62.             scanner.close();
  63.         } catch (Exception e) {
  64.             e.printStackTrace();
  65.         } finally {
  66.             httpGet.releaseConnection();
  67.         }
  68.  
  69.         return guildMembers;
  70.     }
  71.  
  72.     private HttpClient createLoggedInHttpClient(String email, String password) {
  73.         HttpClient httpClient = new UnsecureHttpClient();
  74.         HttpPost httpPost = new HttpPost("https://account.guildwars2.com/login");
  75.         httpPost.setHeader("X-Requested-With", "XMLHttpRequest");
  76.         httpPost.setHeader("Referer", "https://account.guildwars2.com/login");
  77.  
  78.         try {
  79.             List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  80.             nameValuePairs.add(new BasicNameValuePair("email", email));
  81.             nameValuePairs.add(new BasicNameValuePair("password", password));
  82.             httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
  83.             httpClient.execute(httpPost);
  84.         } catch (Exception e) {
  85.             e.printStackTrace();
  86.         } finally {
  87.             httpPost.releaseConnection();
  88.         }
  89.  
  90.         return httpClient;
  91.     }
  92.  
  93.     public static void main(String[] args) {
  94.         Test ms = new Test();
  95.         List<Member> members = ms.fetchGuildMembers();
  96.         for (Member member : members) {
  97.             System.out.println(member.name + "\t\t" + member.homeWorld + "\t\t" + member.achievementPoints + "\t\t" + member.lastLoggedInToGame);
  98.         }
  99.     }
  100.  
  101.     private class Member {
  102.         public String name;
  103.         public Integer achievementPoints;
  104.         public String lastLoggedInToGame;
  105.         public String homeWorld;
  106.     }
  107.  
  108.     private class UnsecureHttpClient extends DefaultHttpClient {
  109.  
  110.         public UnsecureHttpClient() {
  111.             super(createBasicClientConnectionManager());
  112.             getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
  113.         }
  114.  
  115.         private static ClientConnectionManager createBasicClientConnectionManager() {
  116.             BasicClientConnectionManager basicClientConnectionManager = null;
  117.  
  118.             try {
  119.                 SSLContext sslContext = SSLContext.getInstance("SSL");
  120.                 sslContext.init(null, new TrustManager[] { new X509TrustManager() {
  121.  
  122.                     @Override
  123.                     public X509Certificate[] getAcceptedIssuers() {
  124.                         return null;
  125.                     }
  126.  
  127.                     @Override
  128.                     public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
  129.  
  130.                     }
  131.  
  132.                     @Override
  133.                     public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
  134.  
  135.                     }
  136.                 } }, new SecureRandom());
  137.  
  138.                 SSLSocketFactory sslSocketFactory = new SSLSocketFactory(sslContext);
  139.                 Scheme scheme = new Scheme("https", 443, sslSocketFactory);
  140.                 SchemeRegistry schemeRegistry = new SchemeRegistry();
  141.                 schemeRegistry.register(scheme);
  142.  
  143.                 basicClientConnectionManager = new BasicClientConnectionManager(schemeRegistry);
  144.             } catch (Exception e) {
  145.                 e.printStackTrace();
  146.             }
  147.  
  148.             return basicClientConnectionManager;
  149.         }
  150.     }
  151.  
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement