フリーCGI「Referer-Sweeper」のジャンプURLの問題

このQ&Aのポイント
  • 「Referer-Sweeper」というフリーCGIの配布サイトで提供されているスクリプト「Referer-Sweeper」において、ジャンプするURLのページ内リンクの「#」以降が無視される問題があります。
  • 問題の解決方法は見つかっておらず、作者に直接連絡する手段もないため、改良の余地があるのかどうか教えていただきたいです。
  • ただし、配布ソフトは「原則として自由に使用・複製・再配布・改良版の再配布等ができる」という条件がありますので、詳しい方のアドバイスをお待ちしています。
回答を見る
  • ベストアンサー

「Referer-Sweeper」というフリーCGIの事で

http://kan-chan.stbbs.net/download/cgi/refswp.html 上記サイトで配布されている「Referer-Sweeper」というスクリプトなのですが、ジャンプするURLのページ内リンクの「#」以降が無視されてしまうのは技術的にどうにもならないのでしょうか? もし改良の余地があるのでしたら、その方法をご指導いただきたいです。 作者に直接聞くにも連絡場所が何処にも見当たらず、こちらに書き込みしました。 幸い、上記サイトの配布ソフトは「原則として自由に使用・複製・再配布・改良版の再配布等ができるものとします」という事なので、どなたか詳しい方がいらっしゃいましたらよろしくお願いいたします。

  • 5chi
  • お礼率55% (5/9)
  • Perl
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • nerumako
  • ベストアンサー率84% (11/13)
回答No.1

もう解決されたかもしれませんが、perl初心者の私でも答えられそうな質問が未解決になっておりましたので回答させていただきます。 クエリとはURLの ? 以降の事でCGIにデータを渡す方法の一つ、GETメソッドと言います。 クエリでは #(シャープ)を含むそれ以降の文字列をCGIに渡す事が出来ません。 クエリに使う文字列にはURLエンコード処理された文字列を使います。 まず、「ジャンプするURL」をエンコードして下さい。 ご自分でエンコードできない場合は参考URLのようなページでエンコードが可能です。 エンコードしたURLを、 ?url= の後に付けてください。 これでクエリに使えない文字が使えるようになりました。 次にご提示されているperlスクリプトにも変更が必要です。 スクリプトを何も変更されていないと仮定しまして、78行目 $url =~ s/^url\=(.*)/$1/; の行の下に以下の1行を追加します。 $url =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/ego; これはデコード処理と言いましてエンコードした文字列を元の文字列に戻す処理です。 終わりです。 perlは結構面白いので是非色々と勉強してみてください。

参考URL:
http://hpcgi1.nifty.com/glass/url/url_encode.cgi
5chi
質問者

お礼

「ジャンプするURL」をエンコードしなければいけないのですね。 掲示板に書き込まれたURLに対応させるには、掲示板側のCGIもいじらなければいけないって事ですね。 なかなか難しいんですね。 でも、「Referer-Sweeper」でのデコード処理を教えていただけて助かりました。 どういう風に考えれば良いのかも説明してくださったので、少し勉強してみようと思います。 本当に有り難う御座いました。

関連するQ&A

  • HTTP_REFERERの値とセキュアーについて

    ジャンプしてきたURLを参照し、CGIの中に設定した値と一致した場合のみ次のページに移動できるCGIを使用しているのですが、httpsからはじまるAspプログラムからそのCGIをとおすと、上手くHTTP_REFERERの値をとってくれません。 CGIは、http://cgiroom.nu/の「KEEP OUT」というプログラムです。(参照:http://cgiroom.nu/list/level_up/keepout/index.htm) 作者の方の掲示板を調べたり、質問をしたりしているのですが、これ!という解決策がみつかりません。 サポート掲示板に「HTTP_REFERERの値」についてかかれたものがあり、セキュアーかASPの仕様と何か関係があるのでしょうか? 身近にプログラムについてくわしい方がいないため、とてもこまっています。どうか宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • ロリポップでCGIを設置する

    ロリポップでCGIの設置をする方法を教えてください。 http://sala.estrella-azul.com/download/dll.html 此方のスクリプトを使って、ロリポップに掲示板を設置したいのですが、 どうしても上手くできません。 スキンを配布してるサイト様には、アップするだけで使えると書いていたので、 cgi等スクリプトのファイルとスキンのファイルを一つのフォルダにまとめてアップして、 ページを開いてみたのですが、403と表示されてしまいます。 WAF設定の所は無効にしているのですが…。 あと、パーミッションも指定の物にあわせました。 リンクは〇〇.cgiにつなげて良いのですよね?スキンの方をリンクするのでしょうか?? あと、CGIファイルの中身を書き換えたりしなきゃなのでしょうか?

    • 締切済み
    • CGI
  • CGIの利用許諾違反

    カテゴリがよくわからなかったんですけど、とりあえず… CGIの配布なんかをやってます。 自分のホームページにはアクセス解析を入れてるので、誰が私のCGIを使っているのかがとりあえずわかります。 今日も、新しくアクセスがあったところを暇つぶしに見ていると、作者名のところを極端に小さくしているサイトを発見しました。普通にはただのゴミにしか見えません。(17inc/1024x768環境で)私の文字サイズが小さいのかと思い、最大にしても変化なし=スタイルシートでわざと小さくしているようです。 もちろんですが、ページの使用許諾のところに「作者名の名前削除禁止・小さくしてもダメ」というのはちゃんと明記しています。 そこで、何かしらの警告を行いたいのですが、何か良い方法・文章などないでしょうか? 相手は企業(株式会社)でした。 今すぐ裁判…などはぜんぜん考えていません。 というか、その程度で裁判を起こし、こちらに利が生じるかも疑問です。(裁判の費用でかえって損しそう) 何か、参考になるサイトでもかまわないです。情報がありましたらよろしくお願いします。

  • 3Dmark2000がほしい!!

    ベンチマークを競う方々はご存知だと思いますが、はっきり言って下記のURL先で、配布サイトへジャンプしてダウンロードすればいいのです。 http://www.futuremark.com/download/3dmark2000/ しかし、ここのジャンプ先のいずれの配布サイトも現在では入手が出来なくなっておりす。 どうしたら手に入れることが出来ますか? また、入手した3Dmarkのデモを、スクリーンセーバーに設定することは出来ますか?

  • CGIの利用許諾違反発見!

    カテゴリがよくわからなかったんですけど、とりあえず… CGIの配布なんかをやってます。 自分のホームページにはアクセス解析を入れてるので、誰が私のCGIを使っているのかがとりあえずわかります。 今日も、新しくアクセスがあったところを暇つぶしに見ていると、作者名(一番下にある私が作りましたリンクボタン)のところを極端に小さくしているサイトを発見しました。普通にはただのゴミにしか見えません。(17inc/1024x768環境で)私の文字サイズが小さいのかと思い、最大にしても変化なし=スタイルシートでわざと小さくしているようです。 もちろんですが、ページの使用許諾のところに「作者名の名前削除禁止・小さくしてもダメ」というのはちゃんと明記しています。 そこで、何かしらの警告を行いたいのですが、何か良い方法・文章などないでしょうか? 相手は企業(株式会社)でした。 今すぐ裁判…などはぜんぜん考えていません。 というか、その程度で裁判を起こし、こちらに利が生じるかも疑問です。(裁判の費用でかえって損しそう) 何か、参考になるサイトでもかまわないです。情報がありましたらよろしくお願いします。

  • リファラーの取得方法

    プログラム系は初心者なので、うまく説明できるか不安ですが困っています。(>_<)よろしくお願いします。 サイトにアクセス制限(htaccess)をかけて、あるドメイン経由しか閲覧できないようにしました。(直接URLを打ち込んでの閲覧不可) ページにjavascriptを記述したのですが、肝心のページが見れなくなってしまいました。 調べてみるとlocation.hrefはリファラが空になってしまうのでアクセス制限ではじかれるとの事でした。 これはものすごく困りました…。 色々考えてみたのですが、考え・調べて3日が経過し、お手上げ状態です。 分かる方、知恵を拝借出来ませんでしょうか。 スクリプト側は <script language="javascript"> function jump(f){ var sel1=f.mailb.value; if(sel1=="") return false; var url="http://www.xxx.cgi?cmd=xx&mode=$FORM{xx}&xx="+sel1; location.href=url; } </script> html側は <select> <option value="00">aaa</option> <option value="01">bbb</option> <option value="02">ccc</option> 省略 </select> <INPUT type="button" value="絞込" onClick="jump(this.form);return false"> このような感じです。 どんなスクリプトかというと、 例) http://www.test.coms/search.cgi?mode= 上記URLの=の後ろに、選択したセレクトメニューのvalueが入り 絞込みボタンをクリックしてlocatin.hrefで結果を表示するというしくみです。 色々試してみました。 例えば、セレクトメニューを <select> <option value="http://www.test.coms/search.cgi?mode=00">aaa</option> <option value="http://www.test.coms/search.cgi?mode=01">bbb</option> <option value="http://www.test.coms/search.cgi?mode=02">ccc</option> 省略 </select> こんな感じにしてみてダイレクトに飛ばすとか。 しかし、これも結局はlocatin.hrefを使用しないといけませんでした。 どんな方法でもいいです。 リファラーを取得してそれをどのような方法かでクリック時に伝えるとか、location.hrefの代わりのスクリプトを使用するとか・・・。 参考になるかわかりませんが、リファラ実験ページを見つけました。 親切な方に感謝(>_<) http://www.teria.com/~koseki/memo/referrer/ さらに、対応策らしきものも http://d.hatena.ne.jp/takuya_1st/20070321 ただし、あまり理解できておりません。 長くなりましたが何卒よろしくお願い申し上げます。

  • フォームCGIの作成について教えてください。

    現在、下記のようなフォームCGIを作成したいと考えています。 ■ 自己診断(のような)フォーム ウェブ上のアンケートや占いにあるような、各々の質問に「YES」「NO」「分からない」のラジオボタンで解答をしていき、 最後に「結果を見る」ボタンで別ページに飛ぶフォームを 作成したいと思っています。 主な機能としては・・・ ・設問数は20個くらい。 ・「YES」「NO」「わからない」で、各々割り当てたポイントを プログラム内で集計。 ・上記集計点数に応じて、予めプログラム内で割り当てた各々別の診断結果ページへ遷移させたい。 上記のようなことを考えているのですが・・・ この教則本なら、近いことが学べる!などご存知の方が いらっしゃいましたら、ぜひお教え頂けないでしょうか。 (今までフリーで配布されているCGI(BBS等)は自サイトに 組み込みの経験はありますが、ゼロからCGIを作成した経験は ありません。)

    • 締切済み
    • CGI
  • 他のサイトへジャンプするスクリプト

    他のサイトへリンクをジャンプする方法で、JAVAScript以外で、CGIやPHPによるリンクをジャンプさせる方法をどなたかご存じでしょうか? よく、見られる「5秒後に自動的にジャンプします」とあるものはほとんどがJAVAScriptで作られていますが、これをCGIでどのようにすれば良いでしょうか? 配布サイトがありましたら教えて下さい。 自サイトから他のサイトへリンクすることをエンドユーザに知らせる為に他のサイトへ直接リンクする前に一度、他のサイトにリンクすることをエンドユーザに知らせるScriptです。 皆様、お忙しいと思いますが情報お持ちでしたらよろしくお願い申し上げます。

  • スキンをカスタマイズできるBBS(2apesのapeboardのようなもの)を探しています

    2apesのapeboardのように、フリーで配布されている掲示板CGIのスキンをデザインして、自サイトにて配布したいと思っているのですが、 (DasaDasa CGI Room、az*、2apes、エースのようにCGIファイルとデザインファイルが別々にあり、デザインファイルは自由に変更できるタイプ) 上記の掲示板は、どれもBBSタイプが一覧表示型なので、以下の条件にあうような掲示板を探しています。 どなたか御存知の方いらっしゃいましたら教えて頂ければ幸いです。 <条件> 1) 下記のようなタイプ   http://onlinegame.hypermart.net/cgi-bin/spboard/board.cgi?id=board   親記事のタイトルが一覧表示されているタイプ。   Child Treeのような子記事がツリー表示になるタイプではないものが好ましいです。   (こちらのBBSの元となっているCGIを使おうかと思ったのですが、    CGIの配布元が韓国のため、翻訳ソフトを使っても一部わからない文章等があり    断念しました…) 2) 元CGIが、日本語のページによってフリーで配布されている   (日本国内のサイトが好ましいです) 3) 誰でもデザイン(スキン)をカスタマイズでき、   そのデザインを自サイトにて自由に(無料で)配布できる(CGI作者から許可が下りている) OTDのように、サイト上でデザインをカスタマイズするタイプではなく、あくまでもスキン(デザイン)をファイルとして配布できるタイプが好ましいです。 どうか御存知の方、よろしくお願い致します。

  • CGIを使ったパスによるダウンロード

    現在,Dreamweaver CS5.5 (Mac版)を使ってウェブサイトを作成しています(OSはMac OS X 10.6.8で,サーバーはロリポップのレンタルサーバー)。 パスによるダウンロードフォームを設置しようと思いまして,こちらのサイト↓ http://www.kent-web.com/pwd/login.html で無料CGI(アクセス制限・簡易タイプ)を入手しました。 教えて!gooでのアドバイスも受けて,何とか配布サイトの指示通りには無事に設置できたのですが,その先がうまくいきません。 上記無料CGIはログインフォームで,パスを入力してボタンをクリックすると特定のファイルに飛ぶというものなのですが, このリンク先にzipファイルを置いても,それだけではダウンロードできないものなのでしょうか。 具体的には, 上記CGIのうち,init.cgiに $cf{secfile} = 'zipファイルの相対パス(例えば,./private/secret.zip)'; と記述し,それをlogin.cgiに渡すようにしたのですが, それでは,パスを入力してボタンを押しても,大量の意味不明文字(文字化け)が出るだけで,zipがダウンロードされません。 ちなみに,zipファイルでなく,例えば画像ファイルにした場合には,ボタンを押すと,画像がブラウザ上で表示されます。 パスワードを入力し,ボタンを押すと,直接(途中にHTMLを噛ませたりしないで),設定しておいたzipファイルをダウンロードするようにしたいのですが,どなたかその方法をご存知の方がいらっしゃいましたら,ご教授願えると幸いです。

    • ベストアンサー
    • CGI