1

昨日コメントフレームワークを実装しましたが、すべてうまく機能しています。ただし、小さなスクリプトをセットアップして、コメントが投稿されたときにメールを受信するようにして、必要に応じてコメントを公開できるようにしています。しかし、昨夜、このページに侵入したボットから約 20 通のスパム メールを受け取りました。Google アナリティクスをチェックしたところ、昨日は 28 ページ ビューと 6 ユニーク ビューがありました。そのため、1 つか 2 つのボットのように見え、フォームに何度も入力しています。

サイトでソース コードを表示すると、「ハニー ポット」フィールドが表示されるので、なぜそれがスパムを捉えているのかわかりません。ハニーポット/スパムフィルターが機能するために、コードに何か不足しているのではないかと思っています。

これが私のフォームのすべてのコードです。私は Django にかなり慣れていないので、何も見逃している可能性があります。サイトのトラフィックがそれほど多くないため、サードパーティのスパム フィルターを実装する理由がわかりません。

///形

{% get_comment_form for notice as form %}
  <div id="comment_wrap">

   <h1>Comments</h1>
   {% get_comment_list for notice as comment_list %}
   {% get_comment_count for notice as comment_count %}
   <h2>{{comment_count}} comment{{ comment_count|pluralize:"s"}}</h2>
    <form action="{% comment_form_target %}" method="post">

   <table>
   <tr>

    <td>
    {{ form.comment.errors }}
    <div class="add">
      <textarea id="id_comment" name="comment" value="Add a comment...">Add a comment...</textarea></div>
   </td>
   </tr> 
   </table>

   <table>
    <tr>
      {{ form.non_field_errors }}
      <td height="30">

    {{ form.name.errors }}
    <div class="name"><input id="id_name" type="text" maxlength="50" name="name" value="Name"></div>

      </td>

      <td>
    {{ form.company.errors }}

    <div class="company">
      <input type="text" maxlength="50" name="company" id="id_company" value="Company">
    </div>


      </td>



      <input type="hidden" name="url" value="http://www.website.org" />
       <input type="hidden" name="email" value="email@email.com" /> 


      <td>
    <input type="hidden" name="next" value="{{notice.get_absolute_url}}#commentmade"/>

    <button class="submit" value="Submit" >Submit</button>

      </td>
    </tr>
   </table>

   <div id="commentmade" style="display: none;"><p>Thanks for posting. Your comment is awaiting approval.</p></div>
   <div class="fieldWrapper honey_pot">
    {{ form.honeypot.errors }}
    <label for="id_honeypot">If you enter anything in this field your comment will be treated as spam:</label>
    {{ form.honeypot }}
    {{ form.content_type.errors }}
    {{ form.content_type }}

    {{ form.object_pk.errors }}
    {{ form.object_pk }}

    {{ form.timestamp.errors }}
    {{ form.timestamp }}

    {{ form.security_hash.errors }}
    {{ form.security_hash }}
</div>

   </form>

  </div>




  {% for comment in comment_list reversed %}
  <div id="comment_post">
    <span class="name">{{comment.user_name}}</span>
    <span class="company"> | {{comment.company}} | </span>
    <span class="time">{{comment.submit_date|timesince}}</span>
    <p>{{comment.comment}}</p>


  </div>
  {% endfor %}
4

1 に答える 1

2

ハニーポットは隠されたものであり、実際のユーザーではなくボットによって埋められる可能性があります。

ハニーポットに値がある場合、フォームは検証されません。

たとえば、django-akismet に統合された Akismet のようなソリューションがさらに役立つかもしれません。

于 2012-10-26T09:53:10.500 に答える