Font
[thread]5691[/thread]

Google meckert: ..warum??



<< |< 1 2 >| >> 17 entries, 2 pages
Crian
 2003-09-05 19:13
#84227 #84227
User since
2003-08-04
5838 articles
ModeratorIn
[Homepage]
user image
Bist Du sicher, dass Deine URL stimmt? *ausprobier* Jau, im Browser eingegeben stimmt sie. Komisch.

Edit: wohin soll ich Dir den Thread schieben?\n\n

<!--EDIT|Crian|1062774860-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
steinwolf
 2003-09-05 19:10
#84228 #84228
User since
2003-08-04
367 articles
BenutzerIn
[default_avatar]
Tach,
ich hab mit LWP::Useragent ein kleine Script geschrieben, das eine Googlesuche starten und das Ergebnis ausgeben soll..
nicht mehr und nicht weniger..
aaaber..wenn ich kein problem hätte wäre ich nicht hier, denn:
führt mal bei euch den Codeschnipsel da aus!
"Forbidden
Your client does not have permission to get URL /search?q=test&ie=UTF-8&oe=UTF-8....usw."
was hat das zu bedeuten? Wieso erkennt Google, dass ich mit einem SCript und nicht mit einem BRowser die Abfrage starte?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
		#Proxy inaktiv
print $url = "http://www.google.de/search?q=test&ie=UTF-8&oe=UTF-8&hl=de&btnG=Google+Suche";
my $agent = LWP::UserAgent->new();
my $request = HTTP::Request->new('GET', $url);
my $response = $agent->request($request);
if($response -> is_success())
{
print $website = $response->content;
}
else
{
print $website = "Error: ".$response->content;
}


edit: sorry falsches Forum\n\n

<!--EDIT|steinwolf|1062774771-->
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
Crian
 2003-09-05 19:15
#84229 #84229
User since
2003-08-04
5838 articles
ModeratorIn
[Homepage]
user image
Hab ihn mal ins Allgemeine Perl-Forum verschoben...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
steinwolf
 2003-09-05 19:20
#84230 #84230
User since
2003-08-04
367 articles
BenutzerIn
[default_avatar]
danke..
tjahaa..irgendwie erkennt google da wohl doch einen unterschied zwischen meinem script und dem doofen IE..^^

*amkopfkratz*
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
jan
 2003-09-05 19:54
#84231 #84231
User since
2003-08-04
2536 articles
ModeratorIn
[Homepage] [default_avatar]
ja, du identifizierst dich nicht als browser, sondern als perl. google erlaubt keine zugriffe via perl. warum benutzt du nicht den google-soap-service? kostenlos für privatpersonen bis 1000 anfragen / tag. sonst musst du wohl die header etwas anders aussehen lassen...
steinwolf
 2003-09-05 20:21
#84232 #84232
User since
2003-08-04
367 articles
BenutzerIn
[default_avatar]
ist das denn möglich mit LWP::UserAgent?
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
jan10001
 2003-09-05 20:25
#84233 #84233
User since
2003-08-14
962 articles
BenutzerIn
[default_avatar]
Ich versteh nicht wo dein Problem ist, du könntest doch Google weiß machen dein Script wäre der IE oder Mozilla.
format_c
 2003-09-05 20:31
#84234 #84234
User since
2003-08-04
1706 articles
HausmeisterIn
[Homepage] [default_avatar]
Also erstens mach ich sowas etwas anders.

Hier die Methode wie es funktioniert.
Jan hat recht. Google versucht sich gegen Fremdzugriffe von scripten zu schützen.
Gib deinem UA Objekt einfach einen UserAgent mit von einem Browser und schon gehts.
Hier noch ein Beispiel. Ist getestet.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
format_c@linux:~/perl_samples> perl
use warnings;
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;

my $url = "http://www.google.de/search?q=MPlayer&ie=ISO-8859-1&hl=de&meta=";
my ($uri,$param) = split /\?/,$url;
my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (compatible; Konqueror/3; Linux)');
my $request = $ua->request(GET $uri,[split /&|;|=/,$param]);

if ($request->is_success) {
print "OK\n";
}
else {
print "Nicht OK\n";
}

OK
format_c@linux:~/perl_samples>


Alles klar?

Gruß Alex
jan
 2003-09-05 20:33
#84235 #84235
User since
2003-08-04
2536 articles
ModeratorIn
[Homepage] [default_avatar]
genau das ist die frage, bei der er nicht weiß, ob das möglich ist ;)

JA, es ist möglich.
http://www.perldoc.com/perl5.8.0/lib/HTTP/Headers.html
für das header-objekt
http://www.perldoc.com/perl5.8.0/lib/lwpcook.html
für LWP
im beispielrequest
$req = HTTP::Request->new(GET => 'http://www.linpro.no/lwp');
bindest du ein HTTP::Headers-Objekt einfach als dritten parameter ein, also
$req = HTTP::Request->new(GET => 'http://www.linpro.no/lwp', $headers);
, wenn $headers dein objekt ist.
pq
 2003-09-06 15:07
#84236 #84236
User since
2003-08-04
12201 articles
Admin1
[Homepage]
user image
[quote=steinwolf,05.09.2003, 17:10]ich hab mit LWP::Useragent ein kleine Script geschrieben, das eine Googlesuche starten und das Ergebnis ausgeben soll..[/quote]
und warum nimmst du nicht SOAP::Lite? google bietet extra eine
soap-schnittstelle an...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 17 entries, 2 pages



View all threads created 2003-09-05 19:13.