コメントなどのテキスト文字列内の Web サイト リンクを (正規表現またはヒューリスティックを使用して) 検出するにはどうすればよいですか?
目的は、スパムを防止することです。HTML が削除されているため、コピー アンド ペーストへの招待を検出する必要があります。 ほとんどのユーザーはページにうまくアクセスできないため、スパマーがリンクを投稿するのは経済的ではありません。ベスト プラクティスに関する提案、参考資料、またはディスカッションを希望します。
いくつかの目的:
- 適切な形式の URL などの簡単な成果 (
http://some-fqdn/some/valid/path.ext
) - プレフィックスなしの URL
http://
(つまり、有効な FQDN + 有効な HTTP パス) - その他の面白いビジネス
もちろん、スパムをブロックしていますが、同じプロセスを使用してテキストを自動リンクすることもできます。
アイデア
ここに私が考えていることがいくつかあります。
- コンテンツは母国語の散文なので、検出に満足できます
- " " をキャッチするために、最初にすべての空白を削除する必要があり
www .example.com
ますか? 一般的なユーザーは、自分でスペースを削除することを知っていますか、それともブラウザーが「何を意味するか」を実行して削除することを知っていますか? - おそらく、複数のパスがより良い戦略であり、次のスキャンがあります。
- 整形式の URL
- すべての非空白の後に「.」が続きます。任意の有効な TLD が続く
- 他に何か?
関連する質問
私はこれらを読み、現在ここに文書化されているため、必要に応じてこれらの質問で正規表現を参照することができます。
アップデートとまとめ
うわー、私はいくつかの非常に優れたヒューリスティックがここにリストされています! 私にとって、最高の費用対効果は、次の統合です。
- @Jon Bright の TLD を検出する手法 (優れた防御チョークポイント)
- これらの疑わしい文字列については、@capar に従って、ドットをドットに見える文字に置き換えます
- @Sharkey の下付きの · は、ドットのように見える良い文字です。(すなわち " · ")。· は単語境界でもあるので、さりげなくコピー&ペーストするのは難しいです。
これでスパマーの CPM は私のニーズに対して十分に低くなるはずです。「不適切としてフラグを立てる」ユーザーのフィードバックは、他のものをキャッチする必要があります。リストされている他のソリューションも非常に役立ちます。
- すべてのドット四角形を取り除きます(@Sharkeyのコメントは彼自身の答えです)
- 必須の非表示フィールドをフォームに挿入するクライアント側 Javascript に対する @Sporkmonger の要件。
- URL サーバー側に ping を実行して、それが Web サイトであるかどうかを確認します。(おそらく、@Nathan のように、SpamAssassin または別のベイジアン フィルターを介して HTML を実行できます。)
- Chrome のスマート アドレス バーのソースを調べて、Google がどのような巧妙なトリックを使用しているかを確認します
- スパム/マルウェア検出のために OWASP AntiSAMY またはその他の Web サービスを呼び出します。