例えば、
http://www.bing.com/search?q=%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89&go=&form=QBRE&filt=all
のURLの検索結果を下記プログラムで取得しようとしましたが、「400 Bad Request」になってしまいます。
GoogleやYahooは正常に動作しています。
どこに問題があるのか分かりますでしょうか?
$domain = 'www.bing.com';
$file = '/search?q=%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89&go=&form=QBRE&filt=all';
$addr = (gethostbyname("$domain"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(stdout);
print S "GET $file HTTP/1.0\r\n\r\n";
undef $data;
while (<S>) {
$_ =~ s/[\r\n\t\f]//g;
$data .= $_;
}
close(S);
Bing は、Host ヘッダをチェックしてるみたい。
GET /search?q=%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89&go=&form=QBRE&filt=all HTTP/1.1
Host: www.bing.com
こういうリクエストを出せば、結果を取得できます。
有り難うございました。
ばっちりです。
正常に取得できました。