<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>timwhitlock.info &#187; spam</title>
	<atom:link href="http://timwhitlock.info/blog/tag/spam/feed/" rel="self" type="application/rss+xml" />
	<link>http://timwhitlock.info</link>
	<description>Tim Whitlock&#039;s personal site and blog</description>
	<lastBuildDate>Thu, 15 Dec 2011 13:51:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>TwitBlock introduces blacklisting</title>
		<link>http://timwhitlock.info/blog/2010/11/17/twitblock-introduces-blacklisting/</link>
		<comments>http://timwhitlock.info/blog/2010/11/17/twitblock-introduces-blacklisting/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 17:18:04 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://timwhitlock.info/?p=911</guid>
		<description><![CDATA[TwitBlock is over a year old now. One thing we have tried to avoid is being an authority on what is and isn&#8217;t spam. We have deliberately avoided blacklisting accounts. The idea has always been to empower the community to collectively decide what is spam by bringing the most likely junk accounts to the surface. [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://twitblock.org/" target="_blank">TwitBlock</a> is over a year old now</strong>. One thing we have tried to avoid is being an <em>authority</em> on what is and isn&#8217;t spam. We have deliberately avoided blacklisting accounts. The idea has always been to empower the community to collectively decide what is spam by bringing the most <em>likely </em>junk accounts to the surface. We provide some very simple analysis, and indicate how many other people also think an account is spam.</p>
<p><strong>A blacklist is now in effect</strong></p>
<p>For reasons that I&#8217;ll explain below, we have decided to implement a blacklist system as of today. Blacklisted Twitter accounts always show up with a 100% confidence score and will appear at the top of scan results. You can still see the standard spam score indicators, as the screen-grab below shows.</p>
<p><span id="more-911"></span><a href="http://cdn.timwhitlock.info/wordpress/wp-content/uploads/2010/11/tbgrab.png" target="_blank"><img src="http://cdn.timwhitlock.info/wordpress/wp-content/uploads/2010/11/tbgrab.png" alt="Twitblock scan screen grab" /></a></p>
<p><strong>Who decides what accounts are blacklisted?</strong></p>
<p>Currently myself, and selected other people that I deem trustworthy. We take this seriously and won&#8217;t just blacklist an account for being annoying, or noisy. We roughly follow <a href="http://support.twitter.com/entries/18311#spam" target="_blank">Twitter&#8217;s own guidelines on spam</a>, and only blacklist accounts we are certain are malicious, fraudulent, or extremely distasteful.</p>
<p>If you would like to be an administrator, let us know by way of a <a href="http://twitter.com/?status=@twitblockapp%20I%20would%20like%20to%20be%20a%20TwitBlock%20admin" target="_blank">tweet</a>.</p>
<p>If you think you&#8217;ve been blacklisted unfairly, let us know by way of a <a href="http://twitter.com/?status=@twitblockapp%20you%20have%20blacklisted%20me%20unfairly" target="_blank">tweet</a> also.<br />
<strong></strong></p>
<p><strong>Why implement blacklisting?</strong></p>
<p>The methods we&#8217;ve used to date have worked reasonably well, but a distinct problem has been that if you block spammers on other site, it can take us several days to catch up with that data. Spam accounts can collect thousands of followers in a very short space of time, and do a fair bit of damage before they start to show in TwitBlock scans.</p>
<p><a href="http://cdn.timwhitlock.info/wordpress/wp-content/uploads/2010/11/scam1.png" target="_blank"><img class="alignright" src="http://cdn.timwhitlock.info/wordpress/wp-content/uploads/2010/11/scam1.png" alt="" width="320" height="242" /></a>Finally prompting the introduction of blacklists was my observation of the recent Facebook scams. One fake Twitter account was offering invites the new messaging system, another offering Facebook credits. I watched these go viral, racking up 2,000-3,000 followers each before they were finally suspended after about 36 hours.</p>
<p>Even if Twitter <a href="http://twitter.com/artie/status/4719584384909312" target="_blank">were investigating</a> these accounts, no warning was issued via their <a href="http://twitter.com/spam" target="_blank">spam</a> and <a href="http://twitter.com/safety" target="_blank">safety</a> accounts. The fact that these accounts were imitating such a well known company should make them a high priority, as they were far more likely to fool people. In the case of Facebook credits, financial fraud may have been involved.</p>
<p>It is clear that Twitter cannot act fast enough in shutting spam accounts down. If they were to show up in TwitBlock scans sooner, they would be reported by more users. Then perhaps Twitter would notice them sooner, and shut them down faster.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2010/11/17/twitblock-introduces-blacklisting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter extended permissions</title>
		<link>http://timwhitlock.info/blog/2010/10/27/twitter-extended-permissions/</link>
		<comments>http://timwhitlock.info/blog/2010/10/27/twitter-extended-permissions/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 10:50:05 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://timwhitlock.info/?p=808</guid>
		<description><![CDATA[Below is a mock-up of how I&#8217;d like to see Twitter implement fine-grained application permissions. To create this badly photoshopped image for my DevNest talk, I took Facebook&#8217;s Connect dialogue and spliced it with Twitter&#8217;s new design for their Anywhere platform. Take in its beauty, and then I&#8217;ll explain &#8230; This image is a mock-up [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Below is a mock-up of how I&#8217;d like to see Twitter implement fine-grained application permissions. </strong></p>
<p>To create this badly photoshopped image for my <a href="http://timwhitlock.info/blog/2010/10/13/twitter-going-mainstream/">DevNest talk</a>, I took Facebook&#8217;s <em>Connect </em>dialogue and  spliced it with Twitter&#8217;s new design for their <a href="http://dev.twitter.com/anywhere/begin" target="_blank">Anywhere platform</a>.</p>
<p>Take in its beauty, and then I&#8217;ll explain &#8230;</p>
<p><img src="http://cdn.timwhitlock.info/wordpress/wp-content/uploads/2010/10/auth-mockup.png" alt="Twitter extended OAuth permissions" /></p>
<p><span style="color: #ff0000;">This image is a mock-up</span> &#8211; it is not Twitter, or TweetDeck official. (just covering my back, ok?)</p>
<p><span id="more-808"></span></p>
<p><strong>Extended permissions</strong></p>
<p>Note the icons on the left, particularly where it states you are granting permission for the developer to access your direct messages and tweet from your account. Does the app you&#8217;re accessing need to do perform these actions? If it needs to do one thing, should it be able to do <em>all</em> things? I caused a minor storm when I pointed out that any application you authorize <a href="http://timwhitlock.info/blog/2010/09/17/twitter-direct-messaging/">can read your DMs</a>. This is why Twitter (if they want to conquer the mainstream) need to follow in Facebook&#8217;s footsteps.</p>
<p>Facebook call this approach &#8216;<a href="http://developers.facebook.com/docs/authentication/" target="_blank">extended permissions</a>&#8216;. Currently the Twitter API only supports two access levels<strong>: </strong>read-only, or read+write. For example: Read access would be required to access your direct messages. Write access would be required to send them from your account.</p>
<p>This access level decision is taken by the developer, not the consumer, and it&#8217;s currently very badly expressed to the connecting user via the UI. It&#8217;s worth noting that extended permissions are not a part of the OAuth spec itself, rather they are an extra layer on top that is specific to the vendor. Perhaps it should be a part of the spec.</p>
<p>Whether anyone questions an application&#8217;s need for write access is an issue in itself, but this is compounded by the fact that write access basically means maximum access. My site <a href="http://twitblock.org/" target="_blank">TwitBlock</a> needs write access to report spam, but I don&#8217;t need (or want) to be able to tweet from your account any time I like.</p>
<p><strong>Reporting applications</strong></p>
<p>Note the &#8216;report this application&#8217; link in the mock-up<strong> &#8211; </strong>Remember <a href="http://timwhitlock.info/blog/2010/08/17/annoyed-by-auto-tweeting-again/">Twifficiency</a>? Not the first <a href="http://timwhitlock.info/blog/2009/11/29/beating-noisy-twitter-apps/">auto-tweeting</a> app I&#8217;ve grumbled about. Regardless of <a href="http://www.schoolforstartups.co.uk/interview-with-james-cunningham-jamescun-developer-of-twifficiency/" target="_blank">the case specifics</a>, application developers need to be responsible for what their application does.</p>
<p>OAuth means that Twitter can trace any API access back to the application owner, and revoke access. A good start, but it&#8217;s not easy [enough] to report a Twitter application. Facebook have a &#8216;report&#8217; button on connect dialogues and application profile pages. Twitter require you write out a support ticket. How many people know how to get to that page?</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2010/10/27/twitter-extended-permissions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spam on Twitter doesn&#8217;t bother me</title>
		<link>http://timwhitlock.info/blog/2010/10/21/spam-doesnt-bother-me/</link>
		<comments>http://timwhitlock.info/blog/2010/10/21/spam-doesnt-bother-me/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 13:29:59 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://timwhitlock.info/?p=796</guid>
		<description><![CDATA[One of the most common things people say to me when I tell them about TwitBlock is along the lines of &#8220;I&#8217;m not bothered by spam on Twitter&#8221; &#8211; &#8220;I just ignore it&#8221; &#8211; &#8220;Why should I care if a spam account is following me?&#8220;. It&#8217;s a totally understandable point of view, but my response [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most common things people say to me when I tell them about <a href="http://twitblock.org" target="_blank">TwitBlock</a> is along the lines of &#8220;<em>I&#8217;m not bothered by spam on Twitter</em>&#8221; &#8211; &#8220;<em>I just ignore it</em>&#8221; &#8211; &#8220;<em>Why should I care if a spam account is following me?</em>&#8220;.</p>
<p><span id="more-796"></span><br />
It&#8217;s a totally understandable point of view, but my response is usually that there are certain entities that have no place in our online communities. Whether this invades your personal space or not, every opportunity should be taken to render it ineffective for the benefit of everyone.</p>
<p>If these junk accounts didn&#8217;t experience some level of success they probably wouldn&#8217;t bother, so somebody somewhere is falling for it. If you&#8217;re smart enough to know how to deal with spam and avoid the pitfalls, then perhaps you should use that knowledge for the benefit of others.</p>
<p>If you see a bikini clad model looking for &#8216;friends&#8217; and it turns out  she is trying to sell you counterfeit watches, ask yourself whether this  &#8216;person&#8217; has a place in your online community. You could ignore them, or you could report them with a single click.</p>
<p>Of course there are boundaries as to what we should consider harmful. A small business employing questionable tactics out of naivete or misguidedness is on the other end of the spectrum from a phishing attack designed to separate you from your credit card number. If you&#8217;re in any doubt as to what kind of things to look out for, <a href="http://support.twitter.com/entries/18311#spam" target="_blank">Twitter&#8217;s own definition of spam</a> is  good start.</p>
<p>Below are the results of my twtpoll on the subject</p>
<p><script src="http://twtpoll.com/js/badge.js" type="text/javascript"></script><br />
 <script src="http://twtpoll.com/badge/?twt=xz04jj&amp;r=1" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2010/10/21/spam-doesnt-bother-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Annoyed by auto-tweeting, again</title>
		<link>http://timwhitlock.info/blog/2010/08/17/annoyed-by-auto-tweeting-again/</link>
		<comments>http://timwhitlock.info/blog/2010/08/17/annoyed-by-auto-tweeting-again/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 13:18:18 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://web.2point1.com/?p=469</guid>
		<description><![CDATA[Another Twitter app launched itself to momentary viral stardom this morning by using a practice that seems to irritate more-or-less everyone. I refer to the mandatory auto-tweet posted from your own account saying something like &#8220;I just scored X% using suchandsuch app&#8221; &#8211; you know the type. This particular app was the sneaky, (or misguided) [...]]]></description>
			<content:encoded><![CDATA[<p>Another Twitter app launched itself to momentary viral stardom this morning by using a practice that seems to irritate more-or-less everyone. I refer to the mandatory auto-tweet posted from your own account saying something like &#8220;<em>I just scored X% using suchandsuch app</em>&#8221; &#8211; you know the type. This particular app was the sneaky, (or misguided) type that gives no warning, and no way of opting out.</p>
<p>Anyhow, this isn&#8217;t the first time I&#8217;ve been annoyed by auto-tweeting, <a href="/2009/11/29/beating-noisy-twitter-apps/">I&#8217;ve written about it before</a>. It&#8217;s happened more times than I care to remember, so I won&#8217;t go into the details of today&#8217;s particular example, except to say that its author has [sort of]  <a href="http://twitter.com/jamescun/status/21394922905" target="_blank">apologised</a>. It&#8217;s <a href="http://www.nixonmcinnes.co.uk/2010/08/17/twifficiency-blink-and-youll-hate-it" target="_blank">already been blogged</a> anyway if you&#8217;re curious.</p>
<p>What I will harp on about though, is the fact that <strong>this is nothing short of spam</strong> &#8211; Twitter needs to agree, and needs to make it easier to report badly behaved apps.<span id="more-469"></span></p>
<h3>Best practice guidelines for auto-tweeting</h3>
<p>Best practice in my opinion is to at the very least provide a clear statement of  intent, that by authorizing this application it will tweet from your  account immediately. At best this should be an opt-in mechanic, or an  after-the-fact sharing mechanic. Maintaining moral integrity when your  app needs traction may be frustrating, but a good viral encourages users  to spread the message because they want to; i.e. passing the message on  provides value.</p>
<p>I checked Twitter&#8217;s growing <a href="http://dev.twitter.com/pages/api_terms" target="_blank">API terms</a> today to see if there are any guidelines around this specific issue. <em>I couldn&#8217;t find anything</em>. There are plenty of  <a href="http://support.twitter.com/articles/76915" target="_blank">guidelines around automation</a>, but nothing about moral use of the <a href="http://dev.twitter.com/doc/post/statuses/update" target="_blank">statuses/update method</a> when used to post a status update via another user&#8217;s account. I believe the use of this method should insist that if it is not invoked directly and knowingly by the owner of the account, that the owner must at least be been warned, and ideally given the opportunity to opt-out.</p>
<p>I posted <a href="http://qr.ae/Kze" target="_blank">a query about this on Quora</a> to see if anyone else could find anything in black and white about this.</p>
<h3>Defining Twitter spam</h3>
<p><a href="http://support.twitter.com/articles/18311-the-twitter-rules#spam" target="_blank">Twitter&#8217;s definition of spam</a> doesn&#8217;t include this practice either. An application auto-tweeting without consent, or warning is using other people&#8217;s accounts to distribute bulk messages without their permission, and consequently without the recipients&#8217; permission. That&#8217;s about as close to a definition of spam as I think you need to get.</p>
<p>However, despite Twitter&#8217;s maturing terms of service, they doesn&#8217;t seem to think the same. They do say that their <a href="http://support.twitter.com/articles/18311-the-twitter-rules#spam" target="_blank">definition of spam</a> &#8220;will continue to evolve as [they] respond to new tactics&#8221;, but this tactic is not in the least bit new.</p>
<p>If I were a cynic (<em>cough</em>), I may even suggest that identifying more activity as spam would not be in the company&#8217;s interest &#8230;  <a href="http://www.readwriteweb.com/archives/twitter_is_winning_its_fight_against_spammers.php" target="_blank">statistically speaking</a>.</p>
<h3>Reporting applications</h3>
<p>Twitter provide a way to <a href="http://support.twitter.com/articles/64986-how-to-report-spam-on-twitter" target="_blank">report spam</a>, (or you can do it through <a href="http://www.twitblock.org/" target="_blank">TwitBlock</a> <img src='http://timwhitlock.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) &#8211; but this is really for individual user accounts; not all applications have a corresponding Twitter account, and the registered author may just be doing as they&#8217;re told by a client, or employer. There is no specific way to report an application for misbehaviour. You can complain by way of a <a href="http://twitter.com/help/escalate" target="_blank">support ticket</a>, but that&#8217;s not quite good enough. Facebook make reporting an application much easier. All applications have profile pages one click away from the Connect dialogue, and a report button, (albeit a discreet one) is available there. I want to see mandatory application profiles for Twitter, with clearer flagging and revoking facilities.</p>
<h3>Write access and revocation</h3>
<p>You can&#8217;t discuss this topic for long without the old issue of opt-in write access being raised. i.e. Should users be able to choose what privileges they grant an application? Personally, I think it should be made visually clearer (see Facebook), but if an app requires write access to function, I think it is reasonable that the user cannot concoct their own privilege cocktail. i.e. &#8220;This app requires write access to perform its primary function; if you don&#8217;t trust us, don&#8217;t use it&#8221;.</p>
<p>OAuth revocation is too well hidden on Twitter too. It may only be two clicks away from any part of the main UI, but most people don&#8217;t know it&#8217;s there. <em>How do I know this?</em> Firstly, by speaking to people who aren&#8217;t all developers, and secondly &#8211; of the 43,500 users who have authenticated on <a href="http://www.twitblock.org/" target="_blank">TwitBlock</a>, only about a thousand have revoked their &#8216;connection&#8217;, that&#8217;s less than 3%.</p>
<p>While both these issues are important and have room for improvement, I don&#8217;t believe they alone can solve the problem of applications being spammy. That requires a better definition of what it means to be spammy, and a better way to report those applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2010/08/17/annoyed-by-auto-tweeting-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beating noisy Twitter apps</title>
		<link>http://timwhitlock.info/blog/2009/11/29/beating-noisy-twitter-apps/</link>
		<comments>http://timwhitlock.info/blog/2009/11/29/beating-noisy-twitter-apps/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:25:51 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[viral]]></category>

		<guid isPermaLink="false">http://web.2point1.com/?p=269</guid>
		<description><![CDATA[I woke up this morning to the apparent viral spread of the TweetCloud app that unoriginally, but very nicely displays your most tweeted words of the year, or month, or .. you get the idea. Here&#8217;s mine -&#62; If you&#8217;re impatient, you may wish to skip to the good bit. Preamble Now, how did this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://web.2point1.com/wp-content/uploads/2009/11/tweetcloud.png"><img class="alignright size-full wp-image-271" title="tweetcloud" src="http://web.2point1.com/wp-content/uploads/2009/11/tweetcloud.png" alt="tweetcloud" width="234" height="188" /></a>I woke up this morning to the apparent viral spread of the TweetCloud app that unoriginally, but very nicely displays your most tweeted words of the year, or month, or .. you get the idea. Here&#8217;s mine -&gt;</p>
<p><span id="more-269"></span>If you&#8217;re impatient, you may wish to <a href="#goodbit">skip to the good bit</a>.</p>
<h3>Preamble</h3>
<p>Now, how did this app manage such spread when there are so many like it? <em>Possibly</em> because it tweets from your account when your results are ready. This is not uncommon and it can be a nice feature that I might recommend. With the difference that it should be a 100% opt-in feature. TweetCloud&#8217;s start button says &#8220;<em>make and tweet cloud</em>&#8220;, so it does warn you. But people don&#8217;t read &#8211; they click.</p>
<p>TweetCloud insists that you log in before you can use it. It uses OAuth for this which is good (+1 point). Doing this means it can make calls to the Twitter API within <em>your</em> hourly request limit, rather than exhaust its own. (useful if you&#8217;re not whitelisted). But the real reason you must authenticate with TweetCloud is so that it can update your status. When building an app you have to seriously justify asking the user to authenticate/register etc.. As a general rule, the user should see that this action is for their benefit, not yours.</p>
<p>Good examples of this done right would be:</p>
<ul>
<li><em>TwitPic</em>, which has a genuine use for tweeting on your behalf.</li>
<li><em>Canabalt</em>, a game where you <em>want</em> to share your score for social kudos.</li>
</ul>
<p>Both of these apps make the tweet opt-in <em>each</em> time.</p>
<p><a name="goodbit"></a></p>
<h3>The good bit</h3>
<p>While TweetCloud was busy generating the cloud (which took a minute or so) I dived off to my Twitter settings and revoked the permission I had granted the app. If you don&#8217;t know how to do this, it&#8217;s under &#8220;settings &gt; connections&#8221;, or here: <a href="http://twitter.com/account/connections" target="_blank">http://twitter.com/account/connections</a></p>
<p><a href="http://web.2point1.com/wp-content/uploads/2009/11/tweetrevoke.png"><img class="alignnone size-full wp-image-273" title="tweetrevoke" src="http://web.2point1.com/wp-content/uploads/2009/11/tweetrevoke.png" alt="tweetrevoke" width="517" height="217" /></a></p>
<p>As soon as you revoke this permission the app can no longer use the access key that it has obtained. It needs this for any API call that <em>must</em> be authenticated. <em>e.g.</em> getting your public timeline of tweets does not require authentication, whereas updating your status does.</p>
<p>Interestingly the cloud generation continued to churn away. This suggests that the app was actually paging through my timeline without even using authentication. i.e. making public API calls under its own rate limit.</p>
<p>Lo and behold, upon completion there was no tweet from my account.</p>
<p>I also decided to post my cloud as a <a href="http://twitpic.com/rfxe0" target="_blank">TwitPic</a>, just to say &#8230; well, you know.  TwitPic doesn&#8217;t use OAuth, which it should, but that&#8217;s another post.</p>
<p>A few other things to note about &#8220;connections&#8221;:</p>
<ul>
<li>When you grant access to an app, it can store its access key <strong>forever</strong>. i.e. Twitter don&#8217;t provide a key expiry feature like Facebook do. So you should revoke permissions from any app that you&#8217;ve stopped using.</li>
<li>My statistics from <a href="http://twitblock.org" target="_blank">TwitBlock</a> suggest that about 1% of people actually do this. (about 400 of 30,000 users have revoked my key)</li>
<li>Signing out of Twitter does not prevent the app using this access. An app with an access key can tweet from your account whenever it wants until you revoke</li>
<li>The read/write permission you can see is set by the app, not by you. Twitter doesn&#8217;t offer granular permissions like Facebook do</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/11/29/beating-noisy-twitter-apps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TwitBlock trialling whitelist feature</title>
		<link>http://timwhitlock.info/blog/2009/08/21/twitblock-trialing-whitelist-feature/</link>
		<comments>http://timwhitlock.info/blog/2009/08/21/twitblock-trialing-whitelist-feature/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 23:50:27 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2009/08/21/twitblock-trialing-whitelist-feature/</guid>
		<description><![CDATA[- or &#8211; &#8220;I told you it was in Alpha&#8221; I&#8217;ve rolled out an experimental TwitBlock feature designed to reduce &#8220;false positives&#8221; for legitimate accounts that are being blocked. Whitelist entries are now subtracted from blocks. i.e. accounts marked as &#8220;not spam&#8221; will have their blocks counteracted on a 1:1 basis. If this feature is [...]]]></description>
			<content:encoded><![CDATA[<h3>- or &#8211; &#8220;I told you it was in Alpha&#8221;</h3>
<p><strong>I&#8217;ve rolled out an experimental <a href="http://twitblock.org/" target="_blank">TwitBlock</a> feature</strong> designed to reduce &#8220;false positives&#8221; for legitimate accounts that are being blocked. Whitelist entries are now subtracted from blocks. i.e. accounts marked as &#8220;not spam&#8221; will have their blocks counteracted on a 1:1 basis. If this feature is abused, it will be removed.<strong> </strong>It survives on the premise that the spam bots are not capable of whitelisting each other.</p>
<p>Here&#8217;s the full story:<br />
<span id="more-133"></span></p>
<p>As well as trying to work on <a href="http://twitblock.org/" target="_blank">TwitBlock</a> in my &#8220;spare&#8221; time, I&#8217;ve also been manning the Customer Service department (i.e. Twitter) and the Press Office (with the help of my personal press officer <a href="http://twitter.com/adamvincenzini" target="_blank">@adamvincenzini</a>). Monitoring a <a href="http://twitter.com/#search?q=twitblock" target="_blank">Twitter search for TwitBlock</a> shows that most people are pleased with the service. Amongst the tweets there is some valuable feedback and feature requests, but also quite a few vocal complaints, mostly directed at me personally.</p>
<p><strong>The number one complaint</strong> is that legitimate accounts are getting spam scores due to being blocked. In relative terms an account with a lot of blocks is more likely to be spam than an account with a few or none. But in reality people get blocked for various reasons &#8211; sometimes out of animosity, whether for their political or religious views, or just because they don&#8217;t like the person. Worst of all, and somewhat ironic, is that TwitBlock <em>encourages </em>blocking &#8211; that&#8217;s its MO &#8211; and I have been worrying that this may aggravate the situation, especially if people are too trigger happy and accept the spam scores blindly.</p>
<p>One of TwitBlock&#8217;s competitors has been arguing that blocks are a poor indicator of spam, and I think they have a point. I&#8217;d supply a link to said competitor except for the fact that they are a commercial enterprise. (TwitBlock is not a business, a spam-free life should be free).</p>
<p>So every time you click &#8220;not spam&#8221; on an account this will be used to counter every person that clicked &#8220;block&#8221;. This is an experiment, because it could be abused. That&#8217;s just the nature of what we&#8217;re doing here. Try it out, I look forward to more quality feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/08/21/twitblock-trialing-whitelist-feature/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Top 20 Faces of Twitter Spam</title>
		<link>http://timwhitlock.info/blog/2009/08/18/top-20-faces-of-twitter-spam/</link>
		<comments>http://timwhitlock.info/blog/2009/08/18/top-20-faces-of-twitter-spam/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 23:06:43 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2009/08/18/top-20-faces-of-twitter-spam/</guid>
		<description><![CDATA[As we approach 3,000 TwitBlock users, we know of over 100,000 blocks and have stored 20,000 profile pic checksums. I figured it was time to start crunching some numbers. The first of many reports shows the top 20 most duplicated avatars that we know about. Many spam accounts use identical avatars across hundreds of accounts. [...]]]></description>
			<content:encoded><![CDATA[<p>As we approach 3,000 <a href="http://twitblock.org" target="_blank">TwitBlock</a> users, we know of over 100,000 blocks and have stored 20,000 profile pic checksums. I figured it was time to start crunching some numbers.</p>
<p>The first of many reports shows the <strong><a href="http://www.twitblock.org/report_pics.php" target="_blank">top 20 most duplicated avatars</a></strong> that we know about.</p>
<p>Many spam accounts use identical avatars across hundreds of accounts. 		TwitBlock uses this fact as an indicator of a likely spam account. This report just shows the top 20 that we&#8217;ve identified, but there are many more.</p>
<p>This indicator is one of the best ways Twitter could prevent spam accounts from signing up in the first place. Clearly bots have been developed that continually generate new accounts and Twitter does not seem able to prevent this despite the most prolific accounts displaying such identical properties.  With a tiny 0.01% of Twitter accounts authenticated with TwitBlock one can only imagine how many of these accounts are out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/08/18/top-20-faces-of-twitter-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identical profile pics on Twitter</title>
		<link>http://timwhitlock.info/blog/2009/08/09/identical-profile-pics-on-twitter/</link>
		<comments>http://timwhitlock.info/blog/2009/08/09/identical-profile-pics-on-twitter/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 23:15:45 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2009/08/09/identical-profile-pics-on-twitter/</guid>
		<description><![CDATA[The list of Twitter accounts below all have something in common &#8211; They all have an identical profile image, which looks like this: At the time of writing none of these accounts have been suspended. Whether they are breaking any laws or not I don&#8217;t know, but it is clearly a syndicate whichever way you [...]]]></description>
			<content:encoded><![CDATA[<p>The list of Twitter accounts below all have something in common &#8211; They all have an <em>identical</em> profile image, which looks like this:</p>
<p><a href="http://web.2point1.com/wp-content/uploads/2009/08/untitled.jpg" title="Shelley Ryan"><img src="http://web.2point1.com/wp-content/uploads/2009/08/untitled.jpg" alt="Shelley Ryan" /></a></p>
<p>At the time of writing none of these accounts have been suspended. Whether they are breaking any laws or not I don&#8217;t know, but it is clearly a syndicate whichever way you look at it. The profiles all point to a <a href="http://whois.domaintools.com/116.124.128.227" target="_blank">Korean-registered</a> &#8220;Cash generator&#8221; website, which [I would hazard a guess] is a con.</p>
<p><a href="http://twitblock.org?wp">TwitBlock</a> unearthed this statistic from a list of <strike>only 18,000</strike> 100,000 blocked accounts provided by under <strike>400</strike> 3,000 TwitBlock users . When you consider the size and growth of Twitter, you can well imagine that there are far more than <strike>120</strike> 288 profiles in this syndicate. You also have to wonder how much of Twitter&#8217;s growth figures can be attributed to this junk.</p>
<p>[ UPDATE:  18 Aug ]<br />
Many of these accounts have been suspended, but TwitBlock is discovering new ones each day &#8211; currently 248 accounts known with this image.</p>
<p>[ UPDATE 19 Aug ]<br />
I&#8217;ve produced a report of the <a href="http://www.twitblock.org/report_pics.php" target="_blank">top 20 most duplicated profile pics</a> identified by TwitBlock</p>
<p><span id="more-130"></span></p>
<p><strong><font color="#ff0000">Warning</font>: Do not sign up, or give any of your details to the organizations operating these Twitter accounts. I am publishing them only to exemplify the problem of Twitter spam. I am not responsible for any interaction you have with them, which unless you are insane, should be none.</strong></p>
<p><a href="http://twitter.com/vMeqPI">http://twitter.com/vMeqPI</a><br />
<a href="http://twitter.com/WRrCMg">http://twitter.com/WRrCMg</a><br />
<a href="http://twitter.com/mlJJQF">http://twitter.com/mlJJQF</a><br />
<a href="http://twitter.com/ANbVrR">http://twitter.com/ANbVrR</a><br />
<a href="http://twitter.com/nbbUFw">http://twitter.com/nbbUFw</a><br />
<a href="http://twitter.com/VbjyLv">http://twitter.com/VbjyLv</a><br />
<a href="http://twitter.com/Cntyby">http://twitter.com/Cntyby</a><br />
<a href="http://twitter.com/LqtRcf">http://twitter.com/LqtRcf</a><br />
<a href="http://twitter.com/uOyqVa">http://twitter.com/uOyqVa</a><br />
<a href="http://twitter.com/XpgpRn">http://twitter.com/XpgpRn</a><br />
<a href="http://twitter.com/rTVygA">http://twitter.com/rTVygA</a><br />
<a href="http://twitter.com/nEJTBg">http://twitter.com/nEJTBg</a><br />
<a href="http://twitter.com/YMQQpS">http://twitter.com/YMQQpS</a><br />
<a href="http://twitter.com/VQKPnQ">http://twitter.com/VQKPnQ</a><br />
<a href="http://twitter.com/wPIkCc">http://twitter.com/wPIkCc</a><br />
<a href="http://twitter.com/IxQeki">http://twitter.com/IxQeki</a><br />
<a href="http://twitter.com/fRHwjS">http://twitter.com/fRHwjS</a><br />
<a href="http://twitter.com/SQLkeN">http://twitter.com/SQLkeN</a><br />
<a href="http://twitter.com/UVITMh">http://twitter.com/UVITMh</a><br />
<a href="http://twitter.com/LALErx">http://twitter.com/LALErx</a><br />
<a href="http://twitter.com/XPAUtE">http://twitter.com/XPAUtE</a><br />
<a href="http://twitter.com/oTYNJJ">http://twitter.com/oTYNJJ</a><br />
<a href="http://twitter.com/btnwEw">http://twitter.com/btnwEw</a><br />
<a href="http://twitter.com/miHqid">http://twitter.com/miHqid</a><br />
<a href="http://twitter.com/mBlDFx">http://twitter.com/mBlDFx</a><br />
<a href="http://twitter.com/ZNXOwa">http://twitter.com/ZNXOwa</a><br />
<a href="http://twitter.com/NqGOyW">http://twitter.com/NqGOyW</a><br />
<a href="http://twitter.com/hxavpn">http://twitter.com/hxavpn</a><br />
<a href="http://twitter.com/RuoiJm">http://twitter.com/RuoiJm</a><br />
<a href="http://twitter.com/EsWAoU">http://twitter.com/EsWAoU</a><br />
<a href="http://twitter.com/qhbEHn">http://twitter.com/qhbEHn</a><br />
<a href="http://twitter.com/NYnXrh">http://twitter.com/NYnXrh</a><br />
<a href="http://twitter.com/USPwTH">http://twitter.com/USPwTH</a><br />
<a href="http://twitter.com/AXJCxP">http://twitter.com/AXJCxP</a><br />
<a href="http://twitter.com/EwkDGF">http://twitter.com/EwkDGF</a><br />
<a href="http://twitter.com/CFsgJh">http://twitter.com/CFsgJh</a><br />
<a href="http://twitter.com/OergeH">http://twitter.com/OergeH</a><br />
<a href="http://twitter.com/ZCotSf">http://twitter.com/ZCotSf</a><br />
<a href="http://twitter.com/vLxDqS">http://twitter.com/vLxDqS</a><br />
<a href="http://twitter.com/WicZJO">http://twitter.com/WicZJO</a><br />
<a href="http://twitter.com/IbXRqY">http://twitter.com/IbXRqY</a><br />
<a href="http://twitter.com/YvPFRr">http://twitter.com/YvPFRr</a><br />
<a href="http://twitter.com/HBkOqt">http://twitter.com/HBkOqt</a><br />
<a href="http://twitter.com/ZgEuOL">http://twitter.com/ZgEuOL</a><br />
<a href="http://twitter.com/uvKjQD">http://twitter.com/uvKjQD</a><br />
<a href="http://twitter.com/vnARQf">http://twitter.com/vnARQf</a><br />
<a href="http://twitter.com/HerWuB">http://twitter.com/HerWuB</a><br />
<a href="http://twitter.com/eKVLUB">http://twitter.com/eKVLUB</a><br />
<a href="http://twitter.com/gfPZlU">http://twitter.com/gfPZlU</a><br />
<a href="http://twitter.com/UyiqGC">http://twitter.com/UyiqGC</a><br />
<a href="http://twitter.com/qviSWp">http://twitter.com/qviSWp</a><br />
<a href="http://twitter.com/TqSLDX">http://twitter.com/TqSLDX</a><br />
<a href="http://twitter.com/TqZyii">http://twitter.com/TqZyii</a><br />
<a href="http://twitter.com/bsvukd">http://twitter.com/bsvukd</a><br />
<a href="http://twitter.com/jhIpgR">http://twitter.com/jhIpgR</a><br />
<a href="http://twitter.com/bhfmmf">http://twitter.com/bhfmmf</a><br />
<a href="http://twitter.com/uXqbWQ">http://twitter.com/uXqbWQ</a><br />
<a href="http://twitter.com/WJpxYg">http://twitter.com/WJpxYg</a><br />
<a href="http://twitter.com/oWMngy">http://twitter.com/oWMngy</a><br />
<a href="http://twitter.com/QmTmrh">http://twitter.com/QmTmrh</a><br />
<a href="http://twitter.com/LUGSUc">http://twitter.com/LUGSUc</a><br />
<a href="http://twitter.com/ODdVhx">http://twitter.com/ODdVhx</a><br />
<a href="http://twitter.com/XcJaEV">http://twitter.com/XcJaEV</a><br />
<a href="http://twitter.com/WjtuYv">http://twitter.com/WjtuYv</a><br />
<a href="http://twitter.com/GugifL">http://twitter.com/GugifL</a><br />
<a href="http://twitter.com/VpoThO">http://twitter.com/VpoThO</a><br />
<a href="http://twitter.com/jxlhkU">http://twitter.com/jxlhkU</a><br />
<a href="http://twitter.com/pQruGQ">http://twitter.com/pQruGQ</a><br />
<a href="http://twitter.com/VdqRmx">http://twitter.com/VdqRmx</a><br />
<a href="http://twitter.com/QFxPlO">http://twitter.com/QFxPlO</a><br />
<a href="http://twitter.com/tbASwj">http://twitter.com/tbASwj</a><br />
<a href="http://twitter.com/KNjwtX">http://twitter.com/KNjwtX</a><br />
<a href="http://twitter.com/mtjiht">http://twitter.com/mtjiht</a><br />
<a href="http://twitter.com/VHvahx">http://twitter.com/VHvahx</a><br />
<a href="http://twitter.com/cicBeL">http://twitter.com/cicBeL</a><br />
<a href="http://twitter.com/gnhEGT">http://twitter.com/gnhEGT</a><br />
<a href="http://twitter.com/VkbCoV">http://twitter.com/VkbCoV</a><br />
<a href="http://twitter.com/uRSNHq">http://twitter.com/uRSNHq</a><br />
<a href="http://twitter.com/jkVeul">http://twitter.com/jkVeul</a><br />
<a href="http://twitter.com/vDTPIa">http://twitter.com/vDTPIa</a><br />
<a href="http://twitter.com/KqmLxa">http://twitter.com/KqmLxa</a><br />
<a href="http://twitter.com/GmvaEw">http://twitter.com/GmvaEw</a><br />
<a href="http://twitter.com/TvUjVh">http://twitter.com/TvUjVh</a><br />
<a href="http://twitter.com/AyEExh">http://twitter.com/AyEExh</a><br />
<a href="http://twitter.com/mbjbri">http://twitter.com/mbjbri</a><br />
<a href="http://twitter.com/tYUjFU">http://twitter.com/tYUjFU</a><br />
<a href="http://twitter.com/YwoFmN">http://twitter.com/YwoFmN</a><br />
<a href="http://twitter.com/wFdCmw">http://twitter.com/wFdCmw</a><br />
<a href="http://twitter.com/UQwOoc">http://twitter.com/UQwOoc</a><br />
<a href="http://twitter.com/BdJUJt">http://twitter.com/BdJUJt</a><br />
<a href="http://twitter.com/UDHDLW">http://twitter.com/UDHDLW</a><br />
<a href="http://twitter.com/vRFIjE">http://twitter.com/vRFIjE</a><br />
<a href="http://twitter.com/uxLgDu">http://twitter.com/uxLgDu</a><br />
<a href="http://twitter.com/HUAhjY">http://twitter.com/HUAhjY</a><br />
<a href="http://twitter.com/EMvvjh">http://twitter.com/EMvvjh</a><br />
<a href="http://twitter.com/kSTglV">http://twitter.com/kSTglV</a><br />
<a href="http://twitter.com/PPojhB">http://twitter.com/PPojhB</a><br />
<a href="http://twitter.com/sHbtXU">http://twitter.com/sHbtXU</a><br />
<a href="http://twitter.com/sqwqbe">http://twitter.com/sqwqbe</a><br />
<a href="http://twitter.com/gmErEo">http://twitter.com/gmErEo</a><br />
<a href="http://twitter.com/KamTTo">http://twitter.com/KamTTo</a><br />
<a href="http://twitter.com/LYDItd">http://twitter.com/LYDItd</a><br />
<a href="http://twitter.com/vpGLjY">http://twitter.com/vpGLjY</a><br />
<a href="http://twitter.com/liYDFu">http://twitter.com/liYDFu</a><br />
<a href="http://twitter.com/ilTDJU">http://twitter.com/ilTDJU</a><br />
<a href="http://twitter.com/OscPit">http://twitter.com/OscPit</a><br />
<a href="http://twitter.com/tPcsUl">http://twitter.com/tPcsUl</a><br />
<a href="http://twitter.com/nCNaSv">http://twitter.com/nCNaSv</a><br />
<a href="http://twitter.com/RCetVe">http://twitter.com/RCetVe</a><br />
<a href="http://twitter.com/sKPvYO">http://twitter.com/sKPvYO</a><br />
<a href="http://twitter.com/LJudBk">http://twitter.com/LJudBk</a><br />
<a href="http://twitter.com/YMLaqt">http://twitter.com/YMLaqt</a><br />
<a href="http://twitter.com/gxFBFv">http://twitter.com/gxFBFv</a><br />
<a href="http://twitter.com/iMyqAQ">http://twitter.com/iMyqAQ</a><br />
<a href="http://twitter.com/XbMgVj">http://twitter.com/XbMgVj</a><br />
<a href="http://twitter.com/sOwKHA">http://twitter.com/sOwKHA</a><br />
<a href="http://twitter.com/qBaFnR">http://twitter.com/qBaFnR</a><br />
<a href="http://twitter.com/hGMTOF">http://twitter.com/hGMTOF</a><br />
<a href="http://twitter.com/TZrLkX">http://twitter.com/TZrLkX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/08/09/identical-profile-pics-on-twitter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TwitBlock spam ratings explained</title>
		<link>http://timwhitlock.info/blog/2009/08/03/twitblock-spam-ratings-explained/</link>
		<comments>http://timwhitlock.info/blog/2009/08/03/twitblock-spam-ratings-explained/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 22:12:13 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[junk]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2009/08/03/twitblock-spam-ratings-explained/</guid>
		<description><![CDATA[A detailed explanation of the scoring mechanism used by TwitBlock. Some people have complained that they get a high spam score and point out that they are not spammers. There are a number of important things to note about this. This software is in alpha &#8211; these indicators and the scoring mechanisms attached to them [...]]]></description>
			<content:encoded><![CDATA[<h4></h4>
<h3>A detailed explanation of the scoring mechanism used by <a href="http://twitblock.org/?wp" target="_blank">TwitBlock</a>.</h3>
<p>Some people have complained that they get a high spam score and point out that they are not spammers. There are a number of important things to note about this.</p>
<ul>
<li><a href="http://twitblock.org/?wp" target="_blank">This software</a> is in alpha &#8211; these indicators and the scoring mechanisms attached to them <strong>will</strong> change.</li>
<li>As the system gathers data it will rely less on <a href="http://en.wikipedia.org/wiki/Heuristic" target="_blank">heuristics</a> and more on cross-referencing (e.g. how many people have blocked an account)</li>
<li>Some of these tests are only indicators of <strong>automation</strong>, not specifically of malicious behaviour.</li>
<li>The spam rating has <strong>no limit</strong> &#8211; Scoring 40 may be high for a &#8220;<em>legimate</em>&#8221; account, but in a list with real spammers scoring 300+ you&#8217;ll be way down the bottom.</li>
<li>If you display characteristics of a spammer then perhaps this amounts to the same thing as being a spammer. Most normal users score <em>zero.</em></li>
</ul>
<p>Roughly in order of accuracy, here are the 8 tests currently performed in the standard <a href="http://twitblock.org/scan_followers.php?wp" target="_blank">TwitBlock scan</a>.</p>
<h4><span id="more-128"></span>1. Ignore factor.</h4>
<p>This could also be called &#8220;inverse popularity&#8221;. If you follow 200 people and only 50 follow you back your ignore factor is 75%. Whether or not these 50 are the same people you follow is not analysed. The cut-off for scoring is 50%. <strong>Every 1% above 50 currently yields one point</strong>.</p>
<p>This simple and easily calculable factor is quite accurate because it reflects real human behaviour that can be observed. An account that is clearly spam, such as an &#8220;adult&#8221; account will have many times less followers than friends.</p>
<p>Naturally some spammers have found ways to beat this indicator. In some cases spam accounts follow each other to build up numbers, but a more cunning technique is the &#8220;sleeper&#8221; approach. Sleeper accounts pose as real people using stolen tweets pulled from the public timeline. TwitBlock may eventually crawl Twitter looking for these accounts, so expect more about this in future posts.</p>
<h4>2. Follow Rate</h4>
<p>The average number of people you follow per day forms your follow rate. This is calculated as the number of people you follow divided by the number of days you&#8217;ve been on Twitter. Although it&#8217;s a crude average, it is very telling and probably the second most reliable heuristic indicator. Even if you occasionally add a hundred people in a day it&#8217;s unlikely you can keep this up, so your average will drop. Averages are generally low even for power users, so a higher value is a strong indication of automation. The current cut-off (considered normal) is 10 per day. <strong>A point is added for every follower per day above 10.</strong></p>
<p><strong>[UPDATE - Aug 12]</strong><br />
Many popular accounts have high follow rates due to a &#8220;following back&#8221; policy, whether automated or not. The rate at which an account is followed is now subtracted from this value. This may result in lowering spam scores of real spammers, but it also reduces the number of false positives. So now, the rate at which an account follows without reciprocation is known as the &#8220;Stalking rate&#8221;.</p>
<h4>3. Blocked by others</h4>
<p>When you log into TwitBlock the system has access to your blocks and currently refreshes this list once per day until you revoke your authorization of the app. This is a key indicator that will become much more interesting as TwitBlock gathers data. <strong>Currently <strike>10</strike> 5 points are applied for each block on an account</strong>.</p>
<p><strong>[ UPDATE - Aug 22 ]<br />
</strong><a href="http://web.2point1.com/2009/08/21/twitblock-trialing-whitelist-feature/">Whitelisting now used to counteract blocks<br />
</a></p>
<p><strong>[ UPDATE - Aug 24]<br />
</strong><a href="http://web.2point1.com/2009/08/24/diluting-block-counts/">Blocks are now diluted by follower count</a></p>
<h4></h4>
<h4>4. Identical profile pics</h4>
<p>Spammers commonly reuse the same image on multiple accounts. This is particularly common with the &#8220;adult&#8221; accounts. TwitBlock crawls all the blocked accounts it knows about and stores an <a href="http://en.wikipedia.org/wiki/MD5" target="_blank">MD5 checksum</a> of the profile image file. This way any account&#8217;s profile image can be cross-reference with this database. <strong>10 points are applied for each account known to use the same image</strong>.</p>
<p>This test could be easily foiled by spammers. Even using the same photo, it would be trivial alter the checksum. So far however, they appear not to be doing so.</p>
<h4>5. Tweets via API</h4>
<p>Status updates that are submitted without using a registered application (e.g. TweetDeck) will appear as having come &#8220;from API&#8221; (<a href="http://apiwiki.twitter.com/FAQ#HowdoIget%E2%80%9CfromMyApp%E2%80%9DappendedtoupdatessentfrommyAPIapplication" target="_blank">See Twitter FAQ</a>). This is very useful, because spammers don&#8217;t want their activity to be tied to a registered application. If they start to do so then a list of known spammer applications will have to be compiled.<strong> 10 points are applied for API updates</strong>, although only the most recent tweet is analysed for performance reasons.</p>
<p>The points applied are deliberately low because people often give their password to applications that tweet on their behalf. e.g. &#8220;I just signed up to this awesome app and got 1,000 new followers&#8221;. This practice seriously needs to die out, but that&#8217;s another blog post for another day. Additionally many spam tweets appear as &#8220;from Web&#8221;, which suggest they are using the public web interface.</p>
<h4> 6. Missing profile info</h4>
<p>This is not a very reliable indicator and may be dropped. There are 4 profile fields that can be left empty: (Bio, Location, URL and profile image). Most legitimate users fill in at least two of these. <strong>Currently 2 points are added if you leave all 4 empty</strong>. A drop in the ocean compared with other indicators. As I write this I realise this is due a review.</p>
<h4>7. Username looks dodgy</h4>
<p>For a human this is a strong indicator, but <a href="http://stackoverflow.com/questions/1164186/how-to-check-if-a-string-looks-randomized-or-human-generated-and-pronouncable" target="_blank">incredibly hard to implement programmatically</a>. Currently this test performs some very crude tests on the username, such as being all numbers, having no vowels, and checking for a common format used by spammers where two words are followed by a number. Further research is required in this area, but it&#8217;s unlikely to form a reliable indicator going forward because it&#8217;s so easy to fool. <strong><strike>10</strike> 5 points are applied for a username that looks randomly generated</strong>.</p>
<h4>8. Spammy words in bio and status</h4>
<p>This more traditional test merely checks the bio against a list of bad words. The word list needs development and is currently not big enough to be useful. I intend to use the known blocked accounts to build a list of most common words found in spam accounts. <strong>An arbitrary score per word found is currently applied</strong>. For example &#8220;Naughty videos&#8221; yields 10 points.</p>
<p>Stay tuned for updates, as all these indicators are likely to change.</p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/08/03/twitblock-spam-ratings-explained/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>TwitBlock is born</title>
		<link>http://timwhitlock.info/blog/2009/07/27/twitblock-is-born/</link>
		<comments>http://timwhitlock.info/blog/2009/07/27/twitblock-is-born/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 22:36:04 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[data mining]]></category>
		<category><![CDATA[junk]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitblock]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://web.2point1.com/2009/07/27/twitblock-is-born/</guid>
		<description><![CDATA[A bulk blocking and spam filter tool for Twitter www.twitblock.org I&#8217;ve finally got round to building the Twitter app I&#8217;ve been thinking about for months. While everyone else is preoccupied with making fun, or cool apps, I&#8217;ve been thinking about the increasing problem of spam and junk followers on Twitter. I won&#8217;t go into why [...]]]></description>
			<content:encoded><![CDATA[<h3>A bulk blocking and spam filter tool for Twitter</h3>
<p><strong><a href="http://twitblock.org/">www.twitblock.org</a></strong></p>
<p>I&#8217;ve finally got round to building the Twitter app I&#8217;ve been thinking about for months. While everyone else is preoccupied with making fun, or cool apps, I&#8217;ve been thinking about the increasing problem of spam and junk followers on Twitter. I won&#8217;t go into why I think this is such a problem right now, plenty of time for that later.</p>
<p>This is just a quick announcement to say that I&#8217;ve released an early <em>alpha</em> version of a tool that I hope to develop into something genuinely useful. Currently it&#8217;s a <a href="http://twitblock.org/scan_followers.php">simple scanner</a> that analyses your followers for signs of &#8220;spammy&#8221; behaviour. I&#8217;ll post more details about these <em>indicators</em> soon, and I&#8217;ll also share some of the interesting discoveries I&#8217;ve been making about Twitter spam as I go on my mission.</p>
<p>UPDATE: I have posted <a href="http://web.2point1.com/2009/08/03/twitblock-spam-ratings-explained/">about these indicators</a></p>
<p><span id="more-125"></span></p>
<h3>Data mining for good, not evil</h3>
<p>One of the principal aims of <a href="http://twitblock.org/">TwitBlock</a> is to gather data in order to improve the service &#8211; i.e. to make it accurate enough that it could [in theory] be used to <em>automatically</em> filter spam out like an email junk filter endeavours.</p>
<p>By logging into TwitBlock (<a href="http://blog.twitter.com/2009/04/whats-deal-with-oauth.html" target="_blank">via Twitter OAuth of course</a>) you are sharing the list of people that you block. As long as the app is authorized I can update this list and the app can learn from it.</p>
<p>Additionally I will be writing various bots (crawlers) that analyse Twitter activity in terms of suspicious behaviour and mine more data. More about these bots later too <img src='http://timwhitlock.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://timwhitlock.info/blog/2009/07/27/twitblock-is-born/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

