0

ユーザーの Facebook アカウントのさまざまなソース (ユーザーのいいね! など) から URL を取得する Facebook アプリを作成しています。

私が遭遇した問題は、多くの Facebook エントリの「ウェブサイト」および「リンク」フィールドに URL ではない文字列が含まれていることです。Facebook はユーザー入力をチェックしないため、これらのフィールドには基本的に任意の文字列を含めることができます。

、、、、などのURLがすべて受け入れられるよう"http://google.com"に、"https://www.bankofamerica.com"これら"http://www.nytimes.com/2011/06/13/us/13fbi.html?_r=1&hp"のフィールドの文字列を処理できるようにしたいと考えています。"bit.ly""www.pbs.org"

そして、のようなすべての文字列"here is a random string of text the user entered""here'\s ano!!! #%#$^ther weird random string"すべて拒否されます。

URL を「確実」にする唯一の方法は、URL を解決しようとすることだと私には思えますが、それは非常に多くのリソースを消費すると思います。

これらの文字列を正規表現またはその他の方法で分析して、URL の「多く」 (80%) が適切にキャプチャされるようにする賢い方法を考えられる人はいますか? URL の 95% 99.995%?

ありがとう!


編集: 参考までに、私は Python で開発しています。しかし、言語に依存しないソリューションも優れています。

4

2 に答える 2

1

"^(?:https?://)?([A-Za-z0-9-\.]+)/"ホスト名のつづりが間違っていないことを確認したい場合は、最初にそのホスト名を照合してから、そのホスト名のDNSルックアップ(キャッシュ)を実行します。95%の手法では、トップレベルドメインのホワイトリスト(またはそれらの正規表現)を使用します。これは、新しいドメイン(.info、.eu、.biz、.aero)が利用可能になったときに維持する必要があります。URLで許可されていない(エスケープされていない)特定の文字もありますが、一部の人はのようなURLを入力"http://example.com/I don't wanna go!!!"し、ブラウザはそれを有効なにエスケープします"...I%20don%27t%20wanna%20go%21%21%21"

于 2011-06-13T18:29:14.570 に答える
1

開発言語に応じて、URL を検証するためのツールが多数あります。JavaScript で開発していると仮定すると、必要な堅牢性のレベルに応じて、簡単な Google 検索で多くのアプローチが見つかります。

正式な仕様については、http://www.w3.org/Addressing/URL/url-spec.txtを参照してください。

于 2011-06-13T18:31:24.790 に答える