SFS の公衆のコンテンツフィルタを利用する場合には、 ブラウザの自動PROXY設定の JavaScript を使っている。 指定された自動PROXYの URL をアクセスすると、proxy 用のポートを 随時割り当てて、そのポートからのアクセスのみを許可するみたい。 つまり、自動PROXYのScriptを読み込まないと、 SFS の公衆のコンテンツフィルタを利用できない。
pics をだます運用
しかし、読み出したJavaScriptでは、privateは直接接続、それ以外はPROXY という処理を行っている。 そこで、昨日問題となった、保育園のページ(自宅と同じ.ttn.ne.jp)と アクセスカウンタのホスト(ax2.www.infoseek.co.jp)も、直接接続するような 自動PROXYスクリプトを作れば pics サーバをだませる。 FN だますと言っても、ちゃんとユーザ登録だってしてるし、 設置した CGI も一応非公開にする。 /FN そこで、以下のような Script の CGI を自宅サーバに設置する。 ただし、このテクニックが使えるのは、 子供使う端末と自宅サーバが同じルータを経由して出て行く ような、自宅サーバを持っている人だけ。
#!/usr/bin/perl #ホスト名,ポート番号は、SFSユーザ登録をして調べて下さい。 $pics = "http://XXXX.pics.enc.or.jp:XXXXX/pac/pubsfs.js" ; $get = "/usr/bin/GET" ; open( PICS , "$get -e $pics |" ) or die( "Can't open $pics" ) ; $head = 1 ; $port = -1 ; while( ) { if ( $head ) { $head = 0 if ( /^$/ ) ; if ( /^Content-Type:/ || /^Last-Modified:/ || /^ETag:/) { //ヘッダのContent-Typeだけ抽出 print $_ ; } } elsif ( /^\s*pp\s*=\s*(\d+)\s*;\s*$/ ) { //pp=ポート番号;の行を抽出 $port = $1 ; } } # だまして送り返す自動PROXYスクリプト print ≪"EOF" ; function FindProxyForURL(url,host) { pp=$port; if(isPlainHostName(host)) return "DIRECT"; if(isInNet(host,"10.0.0.0","255.0.0.0")|| //privateは直接接続 isInNet(host,"192.168.0.0","255.255.0.0")|| isInNet(host,"172.16.0.0","255.240.0.0")|| dnsDomainIs(host,".ttn.ne.jp")|| //アクセス許可は直接接続 dnsDomainIs(host,"tsaitoh.net")|| dnsDomainIs(host,".infoseek.co.jp")|| isInNet(host,"127.0.0.0","255.0.0.0")) //localhostは直接 return "DIRECT"; return "PROXY pops.pics.enc.or.jp:" + String(pp); } EOF close( PICS ) ;
ということで、子供のブラウザ設定で、自動PROXY設定の欄に、 上記 CGI の URL を指定すれば、
- 子供がブラウザ立ち上げ、
- 自動PROXY設定で、上記 CGI が起動、自宅ルータからのSFS利用が許可される
- ブラウザが ttn,infoseek の時だけ、直接読み出し。
それ以外は、SFSの公衆コンテンツフィルタ経由となる。 あとは、SFSとは別にアクセス許可を与えたいホストがあれば、 dnsDomainIsの行を増やせばいい。
子供向けのリンク集がことごとく動かない。
ブラウザを使ってみると、それなりに安心して子供に使えるようにはなった。 しかし、うちの子供達がよく使う、しまじろう,サンリオ,アンパンマン等 といったサイトがことごとく動かない。ということで、運用断念。
やはり、子供がブラウザを使う時は、横で見ていないとダメなのね….