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
}# あー、これの目的とかは聞かないで。事情を察してください。