2009-03-26 6 views
4

트위터에있는 것처럼 하나의 IP에서 시간당 요청을 제한하는 방법은 무엇입니까? 예를 들어 시간당 100 건의 요청을 제공하려고합니다. 어떤 해결책이 있습니까? 아파치 모듈? 감사.시간당 요청 제한

답변

6

간단한 시작.

  • API 키의 개념을 사용 ( 말할 수 있습니다 그 도메인 또는 계정에 매핑 된 guid).
  • API가 히트 될 때마다 키를 가져 와서 해당 카운터를 증가시킵니다.
  • 카운터 (이 경우 시간)를 기준으로 제한을 작성하십시오.
  • 재설정.

IP로 차단하는 것은 좋지 않습니다. NAT이 문제가 됨

0

IP로하지 마십시오. 전체 대학, 회사 또는 인터넷 카페의 사람들은 동일한 지적 재산권을 공유 할 수 있습니다. 고유성을 식별하기 위해 각 클라이언트의 첫 번째 http 응답에 임의의 값을 가진 쿠키를 삽입하는 것이 가장 좋습니다.

+3

그러나 쉽게 회피 할 수 있습니다. – Sam152

+0

@ Sam152 : 쿠키의 고유성? 명확히. 사용자 고유성을 보장하는 다른 방법을 알고 있습니까? – cherouvim

+0

특정 API 페이지 (xml, json 등)에 대해서만 모든 사용자와 모든 페이지에 대한 제한을 입력하고 싶지 않습니다. 내 말은, 로봇 만이 그러한 페이지에 액세스한다는 것입니다. 나는 인간이 일반 XML이나 JSON을 읽는 것이 너무 어렵다고 생각한다. ;-) 답변 해 주셔서 감사합니다! –