Path: csiph.com!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed4.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.038 X-Spam-Evidence: '*H*': 0.92; '*S*': 0.00; 'dynamically': 0.07; '"my': 0.09; "'.'": 0.09; 'escape': 0.09; 'subject:skip:c 10': 0.09; 'suggestions.': 0.09; 'bit.': 0.16; 'chris,': 0.16; 'doing,': 0.16; 'dot,': 0.16; 'insights': 0.16; 'uncased': 0.16; 'uppercase': 0.16; 'whacked': 0.16; 'written.': 0.16; 'wrote:': 0.18; 'bit': 0.19; 'pieces': 0.19; 'header:User-Agent:1': 0.23; 'script': 0.25; 'certain': 0.27; 'header:In-Reply-To:1': 0.27; 'point': 0.28; 'specifically': 0.29; 'chris': 0.29; 'characters': 0.30; 'matching': 0.30; "i'm": 0.30; '(which': 0.31; 'gives': 0.31; 'code': 0.31; 'getting': 0.31; 'lines': 0.31; 'exclude': 0.31; "skip:' 40": 0.31; "they'll": 0.31; 'quite': 0.32; 'running': 0.33; 'received:google.com': 0.35; 'there': 0.35; 'false': 0.36; 'next': 0.36; "didn't": 0.36; 'thanks': 0.36; "i'll": 0.36; 'too': 0.37; 'message-id:@gmail.com': 0.38; 'displays': 0.38; 'gmail': 0.38; 'to:addr:python-list': 0.38; 'track': 0.38; 'to:addr:python.org': 0.39; 'experts': 0.60; 'manually': 0.60; 'lower': 0.61; 'lost': 0.61; "you're": 0.61; 'first': 0.61; 'name': 0.63; 'kind': 0.63; 'great': 0.65; 'frank': 0.68; 'labor': 0.74; 'upper': 0.74; 'you:': 0.81; 'ashamed': 0.84; 'characters,': 0.84; 'extent.': 0.84; 'viable': 0.84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=nbTtN9tItyqyNzPQNgYP+0NR4cof3GUC8VnV7CHJlww=; b=tqokSnr0KGiIMZIQzpnMkBuH6E8DbLNB5xdt+J/IAceynL3rV4LOB4JWce+Zo2TUkj jyfPz5USM4KMOit8OchjS9ESRT+qyYULdGWWEmJN+RIXv+RkNNWFAmhNNc2H0gKEbHL+ f2/oAmkP9UiaF/LahkhVqLQEgkt8G+ZloKNgF1gMZb6gKZGfUGZ0VupN+SjgVHAIxSYh rfLqILbSbUSmbtDV9+ma5euU+HI9v+zETeb09jh+g+lfsnx0vzOIiL1KCjx3UZBw3ZYo Ue22Zqv4tzLZz7PzG801J5aj8buPrZuRp78CsMQYvXY7eh62sT17waemRI6Cz/hzSWhl eCxw== X-Received: by 10.14.224.198 with SMTP id x46mr5461233eep.53.1379695528024; Fri, 20 Sep 2013 09:45:28 -0700 (PDT) Date: Fri, 20 Sep 2013 17:45:26 +0100 From: Jugurtha Hadjar User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130803 Thunderbird/17.0.8 MIME-Version: 1.0 To: python-list@python.org Subject: Re: Antispam measures circumventing References: <523C6402.7090501@gmail.com> In-Reply-To: <523C6402.7090501@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 57 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1379695530 news.xs4all.nl 15871 [2001:888:2000:d::a6]:55642 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:54495 Chris, Vlastimil, great insights gentlemen! Thanks Chris Angelico wrote: >Instead of matching the ones that are the same as their uppercase >version, why not instead keep the ones that are the same as their >lowercase? That's why I started off doing, and then lost track a bit. It didn't cross my mind that '.' and '@' are uncased characters and I'm a bit ashamed of not thinking about that before running the code (i.e: '.'.lower() gives False '.'.upper() gives False And the same for '@'. So unless you specifically "spare" them, they'll be whacked if you exclude upper case characters, or only include lower case characters). >Ah, now you're getting into the realm of CAPTCHAs. I'll be quite frank >with you: Don't bother. Many MANY experts are already looking into it Yeah.. I thought of writing "My e-mail is my first name, dot, my last name at gmail dot com". Some "riddling" can be viable to a certain extent. Or if your e-mail is ba86rockstar@gm.bu ba, then 86, then rock, then star, at gm dot bu. Or the e-mail can be generated dynamically calling a script that assembles pieces and displays it. This way, it can escape scrapers and all and will make it hard to manually harvest e-mails.. Which brings us to your next point about e-mail harvesters and that kind of labor (which is astounding !). > email = 'REMOVEMEjohn.doSPAMeSPAM@REMOVEMEhotmail.com' > ''.join(filter(lambda x: x==x.lower(),email)) >'john.doe@hotmail.com' Nice ! As well as Vlastimil's suggestions. The things I found on the net weren't that well written. There were *way* too many lines that made me think "No way. There's gotta be a better way". -- ~Jugurtha Hadjar,