Jak ustawic wlasny Useragent ?

0

Witam

Jestem świeżak więc jeśli robię coś nie tak proszę o info ;)

Mam następujący problem. Próbuje zrobić fake useragent w połączeniu proxy.
Używam do tego:
System.getProperties().put("http.agent", "Super mega tajna przegladarka");
Co prawda działa w wyniku tego otrzymuje:
What is my User Agent? Your User Agent is: Super mega tajna przegladarka Java/1.6.0_13

Niestety Java dokleja od siebie Java/1.6.0_13 . Potrafię pozbyć się wersji wystarczy użyć:
System.getProperties().put("java.version", "")

I tu pojawia się problem nie potrafię znaleźć sposobu na usunięcie "Java/"

Kod programu wygląda następująco:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class Tester2 {

	public void ustaw(){
		System.getProperties().put( "proxySet", "true" );
		System.getProperties().put( "proxyHost", "148.233.229.235");
		System.getProperties().put( "proxyPort", "3128" );
		System.getProperties().put( "sun.net.client.defaultReadTimeout", "2000" );
		System.getProperties().put("http.agent", "Super mega tajna przegladarka");
		//System.getProperties().put("java.version", "");
		
	}
	
	public void polacz(){
		String link = "http://www.useragent.org/ip-address.php";
		try {
			URL urltest = new URL(link);
			InputStream is = urltest.openStream();
			 InputStreamReader isr = new InputStreamReader(is);
			   BufferedReader br = new BufferedReader(isr);
			   String linia;
			   while ((linia=br.readLine())!=null){
				   System.out.println(linia);
			   }
		} catch (IOException e) {

		}
	}
		
	public static void main(String[] args) {
		Tester2 x = new Tester2();
		x.ustaw();
		x.polacz();
	}
}

Dziękuje za ewentualną pomoc, pozdrawiam ;)

0

Usun ostatnie znaki ze Stringa ? (metoda substring)

0
[losowa nazwa] napisał(a)

Usun ostatnie znaki ze Stringa ? (metoda substring)

no tak , ale do jakiego Stringa mam się odnieść ?

Przedstawiony wynik , jest wynikiem polaczenia na strone , to strona mi przekazala taką informacje
What is my User Agent? Your User Agent is: Super mega tajna przegladarka Java/1.6.0_13

Useragent tworzy mi w tym wypadku
System.getProperties().put("http.agent", "Super mega tajna przegladarka");
Java/
System.getProperties().put("java.version", "1.6.0_13");

Pozostaje nieszczęsne słowo Java/ którego za cholere nie wiem gdzie szukac by je usunac :(

0

Zawsze możesz użyć socketów ;) w końcu walka z reklamą Sun'a może okazać się porażką.

0

Ty piszesz własną przegladrkę? Jeżeli nie, to (jak napisał @losow nazwa) możesz wyciąć, to nieszczęsne Java/... w otrzymanej odpowiedzi.

0

Jak to w otrzymanej odpowiedzi? Jemu zależy raczej żeby serwer do którego się odwołuje z pomocą URL nie wiedział z jakiej
"przeglądarki korzysta" - mi tu kolega wygląda raczej na jakiegoś domorosłego "crackera" a nie na twórcę przegladarki ;)
W każdym razie to o czym piszecie raczej nic nie da on potrzebuje wycięcia części nagłówka HTTP requestu a nie responosa. To jest teoria natomiast gorzej jest z praktyką w tym przypadku ( URL ). Gdyby korzystał bezpośrednio z sieci
nie byłoby tego probelmu - jak pisałem wyżej.

0

Musiałbys napisać własną klasę dziedziczącą po URLStreamHandler, domyślnie (jak w konstruktorze URL nie podasz URLStreamHandler) dla protokołu "http" Java korzysta z klas w pakiecie sun.net.www.protocol.htttp.
Jest w tych klasach takie coś:

                String agent = (String) java.security.AccessController
                        .doPrivileged(new sun.security.action.GetPropertyAction(
                                "http.agent"));
                if (agent == null) {
                    agent = "Java/" + version;
                } else {
                    agent = agent + " Java/" + version;
                }
                userAgent = agent;
0

Skoro już tak HAKUJECIE to proponuje może niezbyt eleganckie wyjście,
ale po pierwsze działa,
a po drugie nie trzeba rozszerzać żadnej klasy

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class Tester2 {

        public void ustaw(){
                System.getProperties().put( "proxySet", "true" );
                System.getProperties().put( "proxyHost", "148.233.229.235");
                System.getProperties().put( "proxyPort", "3128" );
                System.getProperties().put( "sun.net.client.defaultReadTimeout", "2000" );
                System.getProperties().put("http.agent", "Super mega tajna przegladarka \r\nX: ");
                //System.getProperties().put("java.version", "");

        }

        public void polacz(){
                String link = "http://www.useragent.org/ip-address.php";
                try {
                        URL urltest = new URL(link);
                        InputStream is = urltest.openStream();
                         InputStreamReader isr = new InputStreamReader(is);
                           BufferedReader br = new BufferedReader(isr);
                           String linia;
                           while ((linia=br.readLine())!=null){
                                   System.out.println(linia);
                           }
                } catch (IOException e) {

                }
        }

        public static void main(String[] args) {
                Tester2 x = new Tester2();
                x.ustaw();
                x.polacz();
        }
}
0

Rozwiązanie jest bardzo eleganckie. BTW, nie mogę znaleźć informacji na temat Stringu "\r\nX:", w jakich sytuacjach pełni on specjalną rolę?

0
bogdans_niezalogowany napisał(a)

Rozwiązanie jest bardzo eleganckie.

Zapewniam cię, że nie jest

bogdans_niezalogowany napisał(a)

BTW, nie mogę znaleźć informacji na temat Stringu "\r\nX:", w jakich sytuacjach pełni on specjalną rolę?

No właśnie w takich sytuacjach ( bez innego prostego wyjścia ). Nie znajdziesz tego w dokumentacji bo to jest mój taki troszkę hakerski wymysł - w każdym razie może koledze pomoże

A jeżeli chcesz załapać o co w tym chodzi to polecam zajrzeć do requestów HTTP ;)

0

Dobry myk, o ile sie nie myle to tworzysz po prosty nowy niestandardowy tzw x-header? Hacking na maksa ;d

0

exactly w końcu to "Super mega tajna przeglądaraka" - już sama nazwa zoobowiązuje ;)

0

Dzięki wszystkim za pomoc, a szczególnie dla marcintom ! ;)

I nie jest to przeglądarka, znajomy chciał programik do menelgame żeby "klikac" sobie datki ;). Jako że nie chciałem niespodzianek typu ban, po prostu chciałem fake przeglądarke ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1