2016-12-28 3 views
0

Ich versuche so, Ansichten für einige Stunden auf einer persönlichen Seite zu generieren. Ich verstehe nicht, warum es nicht funktioniert. Also mein aktueller Code: (Ja ich benutze die Spigot API aber das ist jetzt egal).Java - Generieren von Ansichten mit Proxys

@Override 
public boolean onCommand(CommandSender cs, Command cmd, String label, String[] args) { 
    if(args.length == 2){ 
     String link = args[0]; 
     String views = args[1]; 
     int view = 0; 
     try{ 
      view = Integer.parseInt(views); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
      cs.sendMessage("" + views + " is not a number."); 
     } 

      execute(link, view); 


     }else{ 
     System.out.println("More arguments"); 
    } 
    return true; 
} 
private int o = 1; 
private void execute(String link, int views){ 

    new BukkitRunnable() { 
     int i = views; 
     @Override 
     public void run() { 
      i--; 


      try{ 
       String fullProxy = Viewbot.getInstance().getProxys().get(i); 
       String proxy, port; 
       String[] fullProx; 
       fullProx = fullProxy.split(":"); 
       proxy = fullProx[0]; 
       port = fullProx[1]; 




      /* Proxy proxyCon = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy, Integer.parseInt(port))); 
       HttpURLConnection connection =(HttpURLConnection)new URL(link).openConnection(proxyCon); 
       connection.setDoOutput(true); 
       connection.setDoInput(true); 
       connection.setRequestProperty("Content-type", "text/xml"); 
       connection.setRequestProperty("Accept", "text/xml, application/xml"); 
       connection.setRequestMethod("POST");   
       */ 
       Properties systemProperties = System.getProperties(); 
       systemProperties.setProperty("http.proxyHost",proxy); 
       systemProperties.setProperty("http.proxyPort",port); 
       systemProperties.setProperty("https.proxyHost",proxy); 
       systemProperties.setProperty("https.proxyPort",port); 
        URL server = new URL(link); 
        HttpURLConnection connection = (HttpURLConnection)server.openConnection(); 
        connection.setUseCaches(false); 
        connection.connect(); 
        System.out.println("Respone: "+ connection.getResponseMessage()); 

        System.out.println("View #" + o + " gesendet!"); 
        o++; 
          connection.disconnect(); 


          System.out.println("Proxy: " + proxy + " Port: " + port); 
          System.out.println("System using: " + systemProperties.getProperty("http.proxyHost") + ":" + systemProperties.getProperty("http.proxyPort")); 
          System.out.println("Proxy: " + connection.usingProxy()); 


      }catch(Exception ex){ 
       Properties systemProperties = System.getProperties(); 
       ex.printStackTrace(); 
       Viewbot.getInstance().failProxys.add(systemProperties.getProperty("http.proxyHost") + ":" + systemProperties.getProperty("http.proxyPort")); 
      } 
      if(i == 5){ 
       for(int i = 0; i < Viewbot.getInstance().failProxys.size(); i++){ 
        String failed = Viewbot.getInstance().failProxys.get(i); 
        Viewbot.getInstance().getProxys().remove(failed); 


       } 
       Path file = Paths.get(Viewbot.getInstance().getDataFolder() + "/HTTPS.txt"); 
       try { 
        Files.write(file, Viewbot.getInstance().getProxys(), Charset.forName("UTF-8")); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       System.out.println("File saved"); 
      } 
      if(i == 0){ 
       cancel(); 
      } 

     } 
    }.runTaskTimerAsynchronously(Viewbot.getInstance(), 0, 2); 




} 

Ein Beispiel für die Ausgabe dieser ganzen Sache:

[00:34:45 INFO]: Response: OK 
[00:34:45 INFO]: View #430 sent! 
[00:34:45 INFO]: Proxy: 41.76.44.76 Port: 3128 
[00:34:45 INFO]: System using: 45.63.16.86:8080 
[00:34:45 INFO]: Proxy: false 

Der Ausgang ist jetzt:

[00:57:58 INFO]: Proxy: 36.80.34.225 Port: 3128 
[00:57:58 INFO]: System using: 113.18.193.26:8000 
[00:57:58 INFO]: Proxy: true 
[00:57:58 INFO]: Respone: OK 

Aber wenn man hier: http://84.200.122.107/ Es Ansichten nicht hinzufügen ..

So ist es mit einer anderen IP-Adresse zu verbinden. Was ist der Fehler als? Es zeigt auch, dass es keinen Proxy verwendet, der falsch sein sollte. Danke für jede Hilfe.

+0

systemProperties.setProperty ("http.proxyHost", Proxy); ist JVM-weit. Hast du keinen anderen Thread, der andere Werte setzt? –

+0

Ich habe nicht das einzige im ganzen Projekt. –

Antwort

0

Ich denke, Sie durchlaufen die Proxy-Liste, jeder Aufruf von BukkitRunnable wird eine neue nehmen.

Wenn also Aufruf an BukkitRunnable in verschiedenen Threads überlappen, wird der Wert festgelegt und der andere liest es.

Um ein Proxy pro Verbindung verwenden Sie gemeinsam http-Client verwenden sollte, die es zu tun in der Lage ist:

Common HTTPclient and proxy

Verwandte Themen