# URL - 403 ERROR - Google News - PHP geht



## Partheeus (20. Sep 2006)

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:

```
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*:


```
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*:


```
$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.....


----------



## AlArenal (20. Sep 2006)

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.


----------



## Partheeus (20. Sep 2006)

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   .


----------



## AlArenal (20. Sep 2006)

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


----------



## Roar (20. Sep 2006)

> 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...


----------



## Partheeus (20. Sep 2006)

Habs erkannt und Fehler gefunden!!!! Jetzt gehts!!! 

hier:


```
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());
```


----------

