#! /usr/bin/env perl # $Id: google.cgi 281 2005-04-16 12:46:40Z takayama $ use strict; use Socket; please(); exit 0; sub please { print "Content-type: text/html;charset=UTF-8\n\n"; my $url = "http://www.google.co.jp/"; my $query = $ENV{'QUERY_STRING'}; $query =~ s/q=([^&]+)&?//; my $q = $1; # url 分離 $url =~ /^http:\/\/(.+?)\/$/; my $host = $1; # アドレスを構造体に変換 my $port = getservbyname('http', 'tcp'); my $ipaddr = inet_aton($host) or die "$host は存在しないホストです。\n"; my $sock_addr = pack_sockaddr_in($port, $ipaddr); # 接続 socket(SOCKET, PF_INET, SOCK_STREAM, 0) or die "ソケットを生成できません。\n"; connect(SOCKET, $sock_addr) or die "${host}:${port}に接続できません。\n"; select(SOCKET); $|=1; select(STDOUT); # リクエスト print SOCKET "GET /search?q=$q&${query} HTTP/1.0\r\n"; print SOCKET "Host: ${host}:${port}\r\n"; print SOCKET "User-Agent: Mozilla/5.0 (Google ACCR)\r\n"; print SOCKET "\r\n"; # ヘッダ部を飛ばす while() { # 改行のみの行ならループを抜ける m/^\r\n$/ and last; } # 検索文字列抽出 print "\n"; # 検索結果まで飛ばす while() { if(/^.fl:link{color:#7777CC}/) { ; ; last; } } print "\n"; # 検索結果表示 while() { chomp(); s/

]+>[^<]+<\/font>]+>[^>]*[^<]+<\/i><\/b>[^>]*<\/a>  
//i; s/\.\.\.<\/b>/.../gi; if(/

/) { my (@body) = split(/
", $count); last; } print; } print "\n\n"; #open(OT, ">>files"); #print OT "$q&$query\n"; #close(OT); }