Kate, sorry there were some errors Here's a working example: https://github.com/scotch/operation_curl_block/blob/master/appengine_config.py
It should be "status" not "status_code", AntiCurlMiddleware not AntiCurlMiddleware*y *and I used startswith *instead* of *is* You can test it here: *curl -v http://anticurl.scotch-media.appspot.com* will return: * About to connect() to anticurl.scotch-media.appspot.com port 80 (#0) * Trying 173.194.77.141... connected * Connected to anticurl.scotch-media.appspot.com (173.194.77.141) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5 > Host: anticurl.scotch-media.appspot.com > Accept: */* > < HTTP/1.1 *423* Locked < Content-Type: text/html; charset=UTF-8 < Vary: Accept-Encoding < Date: Thu, 02 Aug 2012 20:40:13 GMT < Server: Google Frontend < Cache-Control: private < Transfer-Encoding: chunked < * Connection #0 to host anticurl.scotch-media.appspot.com left intact * Closing connection #0 *Too many requests!* I hope that helps - Kyle On Thursday, August 2, 2012 2:47:57 PM UTC-5, Kate wrote: > > I am looking for 'win' in user agent as that IS the USER Agent I am using > to test. It should evaluate to true and give a 423 error. > > I do not want to test it using curl. I am trying to see if I can return a > 423 error. It is a TEST! > > I am running it locally to see if it will block. > > It doesn't. > > 'Win' is in my user agent - as I am testing. > > > > > On Thursday, August 2, 2012 3:43:44 PM UTC-4, hyperflame wrote: >> >> You're trying to find curl requests by looking for a "win" string? >> IIRC, curl uses "curl" as its default user-agent, you have to look for >> that. Also, it's a bad idea to look for "Win", as legitimate requests >> (users using WINdows) will be blocked. >> >> Also, it should be noted (and I believe a number of people have >> already mentioned) that curl allows a person to change their user- >> agent; just looking for a "curl" user-agent may not stop the problem. >> >> On Aug 2, 1:55 pm, Kate <[email protected]> wrote: >> > Well I tried this by testing user agent but it passes the test and the >> page >> > loads correctly, which it shouldn't in this example. >> > Am I meant to pass 'app' as such? I am not sure of this parameter. >> > >> > Here is my code >> > from webob import Response >> > >> > class AntiCurlMiddleware(object): >> > def __init__(self, app): >> > self.app = app >> > >> > def __call__(self, environ, start_response): >> > ua = os.environ.get('HTTP_USER_AGENT', "unknown") >> > sindex = string.find(ua,'Win',0) >> > if sindex > 0: >> > resp = Response('Too many requests!') >> > resp.status_code = 423 >> > return resp(environ, start_response) >> > return self.app(environ, start_response) >> > >> > def webapp_add_wsgi_middleware(app): >> > return AntiCurlMiddlewarey(app) >> > >> > >> > >> > >> > >> > >> > >> > On Wednesday, August 1, 2012 4:43:58 PM UTC-4, Kate wrote: >> > >> > > I am getting tens of thousands of curl requests - many thousands time >> > > browser requests and I want to block them. I'm using python. They >> coming >> > > from many different IPs most in Europe. If I can't stop them I will >> have >> > > to close my site or go to a new provider. >> > >> > > Thank in advance, >> > >> > > Kate >> > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-appengine/-/ZVLN87WZ6tgJ. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
