Proxy CGI
リクエストの請求を肩代わりするCGI。別名、Web Proxy。
原理はとっても簡単。見たいページのURLを渡してもらって、それを取得して返すだけ。
だから、最初はこんなんを書いた。
#!/usr/local/bin/ruby require 'cgi' require 'open-uri' cgi = CGI.new print "Content-type: text/html?n?n" open(cgi['url']){|io| print io.read }
でもこれだと、リンクを辿れないし、画像も表示できない。だから、ちょっといじっくってやる。
#!/url/local/bin/ruby require 'cgi' require 'uri' require 'open-uri' cgi = CGI.new url = cgi['url'] if cgi['escape'] == 'true' then url = CGI.unescape(cgi['url']) end base = URI.parse(url) print cgi.header("type"=>"text/html") open(url){|io| content = io.read content.gsub!(/(href|src)="([^"]+)"/){ link = 'error' if $2 then link = base+$2 end %(#{$1}="http://#{cgi.host}#{cgi.script_name}?url=#{CGI.escape(link.to_s)}&escape=true") } print content }
# あー、これの目的とかは聞かないで。事情を察してください。