URL - 403 ERROR - Google News - PHP geht

Status
Nicht offen für weitere Antworten.

Partheeus

Aktives Mitglied
Moin...

ich hab mal wieder ne Frage und zwar versuche ich per URL auf die http://news.google.de Seite zugelangen,
ständig kommt es aber zu dem Fehler:
Code:
Server returned HTTP response code: 403 for URL: [url]http://news.google.de//news?hl=de&ned=de&ie=UTF-8&q=arbeit[/url]

Habe hier auch schon gelesen das es nicht möglich ist, auf solchen Dienst per URL zugreifen zu können (siehe hier ).

Was mich verwundert, das ich z.B. mit meinem PHPScript, sehr wohl so eine Abfrage machen kann.
Hat jemand eine Idee, woran das liegen kann???

Hier mein JAVA Code:

Code:
	URL url = null;
        InputStream input = null;
        try{
            url = new URL( "http://news.google.de//news?hl=de&ned=de&ie=UTF-8&q="+name );
            URLConnection conn = url.openConnection();
            conn.setUseCaches(false);
		    conn.setDoOutput(true);
		    conn.setDoInput(true);
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        }catch(MalformedURLException ex){
            ex.printStackTrace();
        } catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        StringBuffer strb = null;
        try{
            try{
                input = url.openStream();
            }catch(UnknownHostException ex){
            }
            if( input != null ){
                int c = input.read();
                strb = new StringBuffer();
                while( c != -1 ){
                    char cc = (char)c;
                    strb.append(cc);
                    c = input.read();
                }
            }
        }catch(IOException ex){
            ex.printStackTrace();
        }
        System.out.println(strb.toString());

und mein funktionierender!!! PHP Code:

Code:
        $host = "news.google.de";
	$path = "/news?hl=de&ned=de&ie=UTF-8&q=arbeit";
	$query = "";
	$post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type: application/x-www-form-urlencoded\r\n".
                  "${others}Content-length: ".strlen($query)."\r\nConnection: close\r\n\r\n$query";
	$h=fsockopen($host,80, $errno, $errstr, 90);
	fwrite($h,$post);
	for($a=0,$r='';!$a;){
		$b=fread($h,8192);
		$r.=$b;
		$a=(($b=='')?1:0);
	}
	fclose($h);

Ich finde einfach keine Lösung für dieses Problem. :-( Bitte helft mir.....
 
Das Problem hatten wir schonmal vor einigen Wochen. Es hat den Anschein, als werte Google die beim Request mitgelieferten Header (z.B. User-Agent) aus um sicherzustellen, dass nicht jemand über Umwege eine Google-Suche in seine Programme einbaut, denn dafür hat Google ja eigens Webservices im Angebot, mit denen sie wohl nach Beendigung der Betaphase Geld machen werden wollen.
 
Hmm....also gibts da erstmal keine vernüftige Möglichkeit, oder?!

Ich mein, ich könnte immernoch mein PHPScript aufrufen und mir die Ergebnisse darüber holen,
aber das ist schon wieder so 😳 .
 
Du könntest natürlich den User-Agent Header einfach auf den Wert irgendeiner gängigen Browserversion setzen und Googel damit austricksen - so meine Vermutung mit dem Agent richtig ist, wovon ich aber ausgehe 😉
 
Hmm....also gibts da erstmal vernüftige keine Möglichkeit, oder?!
die lösung steht doch in dem post über deinem, und in dem verlinken thread...

es gibt übrigens auch rss feeds bei google für diesen zweck...
 
Habs erkannt und Fehler gefunden!!!! Jetzt gehts!!! 🙂

hier:

Code:
		URL url = null;
        InputStream input = null;
        HttpURLConnection conn = null;
        try {
			url = new URL("http://news.google.de/news?hl=de&ned=de&ie=UTF-8&q=arbeit");
			conn = (HttpURLConnection) url.openConnection();
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setRequestProperty(
				"user-agent",
				"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)");
			conn.setRequestProperty("Referer", "http://www.google.de/");
			conn.connect();
		} 
        catch (MalformedURLException e) { e.printStackTrace(); }
		catch (IOException e) { e.printStackTrace(); }
        StringBuffer strb = null;
        try {
            try {
                input = conn.getInputStream();
            } catch(UnknownHostException ex) { }
            if( input != null ) {
                int c = input.read();
                strb = new StringBuffer();
                while( c != -1 ){
                    char cc = (char)c;
                    strb.append(cc);
                    c = input.read();
                }
            }
        }catch(IOException ex){
            ex.printStackTrace();
        }
        System.out.println(strb.toString());
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben