<?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>OMNINOGGIN &#187; Web Development</title>
	<atom:link href="http://omninoggin.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://omninoggin.com</link>
	<description>WordPress and Web Dev From the Ground Up</description>
	<lastBuildDate>Wed, 07 Jul 2010 16:01:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>How to Make WP Greet Box Work on Non-WordPress Pages</title>
		<link>http://omninoggin.com/web-development/how-to-make-wp-greet-box-work-on-non-wordpress-pages/</link>
		<comments>http://omninoggin.com/web-development/how-to-make-wp-greet-box-work-on-non-wordpress-pages/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 11:00:16 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wp greet box]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=518</guid>
		<description><![CDATA[ photo credit: miss604
A few people have asked me how to make WP Greet Box work with non-WordPress pages.  Luckily there is a way to easily do this and I will show you how in this tutorial:
Requirement
You must have WordPress installed with WP Greet Box plugin enabled.
JavaScript Modification
You will have to make a copy of [...]]]></description>
			<content:encoded><![CDATA[<div class="alignright"><a href="http://www.flickr.com/photos/25566432@N00/2450906634/" title="I had to" target="_blank" rel="nofollow"><img src="http://farm4.static.flickr.com/3018/2450906634_1b429134a7_m.jpg" alt="I had to" border="0" /></a><br /><small class="alignright" style="margin-right:10px"><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank" rel="nofollow"><img src="http://omninoggin.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" style="background:none;border:none;margin:0;padding:0" /></a> photo credit: <a href="http://www.flickr.com/photos/25566432@N00/2450906634/" title="miss604" target="_blank" rel="nofollow">miss604</a></small></div>
<p>A few people have asked me how to make WP Greet Box work with non-WordPress pages.  Luckily there is a way to easily do this and I will show you how in this tutorial:</p>
<h3>Requirement</h3>
<p>You must have WordPress installed with WP Greet Box plugin enabled.</p>
<h3>JavaScript Modification</h3>
<p>You will have to make a copy of &#8220;http://example.com/wp-content/plugins/wp-greet-box/js/onload.js&#8221;, modify it, and place it somewhere accessible by your non-WordPress page.  As an example, I will place a copy of the file at &#8220;http://example.com/non-wordpress-platform/onload.js&#8221;.  Now open &#8220;non-wordpress-platform/onload.js&#8221; and modify the line:</p>
<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">url: &quot;index.php&quot;,</pre></div></div>
<p>to point to your blog WordPress blog index.php.</p>
<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">url: &quot;/index.php&quot;,</pre></div></div>
<p>For example, if your blog is installed under &#8220;http://example.com/blog/&#8221;, you would change the code to:</p>
<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">url: &quot;/blog/index.php&quot;,</pre></div></div>
<h3>JavaScript Placement</h3>
<p>There are a few Javascript files that you need to reference to do this.  Make sure you drop the following Javascript references into your non-WordPress page:<br />
<span id="more-518"></span></p>
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://example.com/wp-includes/js/jquery/jquery.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://example.com/wp-content/plugins/wp-greet-box/js/functions.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://example.com/non-wordpress-platform/onload.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>
<p>Notice that we are referencing your modified &#8220;onload.js&#8221; in here.  Be sure to replace example.com with your own site domain.</p>
<h3>CSS Placement</h3>
<p>There is also a CSS file that you need to reference.  Include the following style reference into your non-WordPress page&#8217;s header:</p>
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://example.com/wp-content/plugins/wp-greet-box/css/wp-greet-box.css&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>
<p>Be sure to replace example.com with your own site domain.</p>
<h3>HTML Placement</h3>
<p>This is the easy part.  You will have to place the following HTML code anywhere you want your greeting message to show up:</p>
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;greet_block&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>
<h3>That&#8217;s all!</h3>
<p>That wasn&#8217;t so bad was it?</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/how-to-make-wp-greet-box-work-on-non-wordpress-pages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using jQuery to Easily Dofollow/Nofollow Links</title>
		<link>http://omninoggin.com/web-development/using-jquery-to-easily-dofollownofollow-links/</link>
		<comments>http://omninoggin.com/web-development/using-jquery-to-easily-dofollownofollow-links/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 14:00:46 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[link juice]]></category>
		<category><![CDATA[nofollow]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=393</guid>
		<description><![CDATA[This might be old news to you, but you should know that the Googlebot now follow links created by Javascript.  I have seen evidence of this myself and was starting to get frustrated that I would have to reevaluate my site and patch any leaking link juice from Javascript links.  Before I got [...]]]></description>
			<content:encoded><![CDATA[<p>This might be old news to you, but you should know that the <a href="http://www.seomoz.org/ugc/new-reality-google-follows-links-in-javascript-4930" rel="nofollow" >Googlebot now follow links created by Javascript</a>.  I have seen evidence of this myself and was starting to get frustrated that I would have to reevaluate my site and patch any leaking link juice from Javascript links.  Before I got to the point of full frustration, I realized that I can use this Googlebot &#8220;feature&#8221; to my advantage and use Javascript itself to easily correct this leaking link juice problem.<br />
<span id="more-393"></span></p>
<h3>Finding Dofollow Links</h3>
<p>Before correcting them, we have to find them!  I use the awesome <a href="http://www.quirk.biz/searchstatus/" rel="nofollow" >SearchStatus</a> Firefox add-on to hunt down any unintentional dofollow links.  After installing the plugin, I just enable the &#8220;Highlight Nofollow Links&#8221; feature by right clicking on the @ symbol on the bottom right of Firefox.<br />
<img src="http://omninoggin.com/wp-content/uploads/2009/02/searchstatus.png" alt="SearchStatus Options" title="SearchStatus Options" width="195" height="276" class="alignnone size-full wp-image-476" /><br />
After enabling the &#8220;Highlight Nofollow Links&#8221; feature, you will see that all nofollow links will be highlighted red.<br />
<a href="http://omninoggin.com/wp-content/uploads/2009/02/nofollow.png"><img src="http://omninoggin.com/wp-content/uploads/2009/02/nofollow-300x235.png" alt="Nofollow Page" title="Nofollow Page" width="300" height="235" class="alignnone size-medium wp-image-477" /></a></p>
<h3>Nofollow Using jQuery Magic</h3>
<p>The beautiful thing about jQuery is its ability to perform operations on multiple things with a single line of code.  I can abuse this feature to help me set all links in any HTML block with a rel=&#8221;nofollow&#8221;.  Just to give you an idea of how easy and powerful this is, this is the line I use to nofollow all links in my Intense Debate comment form:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.comment_form a&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;rel&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;nofollow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>To dofollow a certain set of links, you can do something like the following:</p>
<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.blogroll a&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;rel&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>Easy isn&#8217;t it?  No plugin hacking, no search and replace, and no hassle!</p>
<p>(For those of you who are not the jQuery type, you can take a look at the <a href="http://docs.jquery.com/Selectors" rel="nofollow" >jQuery selector documentation</a> to figure out the meaning of &#8220;.comment_form a&#8221;.)</p>
<h3>Integration</h3>
<p>In this section, I will show you how to get jQuery code to run on every page load.</p>
<ul>
<li>Download <a href='http://omninoggin.com/wp-content/uploads/2009/02/nofollow.js'>nofollow.js</a> and place it anywhere on your server as a base to start from.</li>
<li>Modify nofollow.js using jQuery to follow/nofollow any links as you see fit.</li>
<li>Refer to nofollow.js in the footer of your template.  For example:
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/path/to/your/nofollow.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>
</li>
</ul>
<h3>Final Thoughts</h3>
<p>After realizing the power of jQuery and this Googlebot feature, patching leaking PR link juice isn&#8217;t that bad after all.</p>
<p>Do you guys have a better method of doing this?  Do you disagree with my Googlebot findings?  Do you know any other search engines that follow Javascript links?  Please let me know in the comments section.</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/using-jquery-to-easily-dofollownofollow-links/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Minify (CSS and Javascript Optimizer) Review</title>
		<link>http://omninoggin.com/web-development/minify-css-and-javascript-optimizer-review/</link>
		<comments>http://omninoggin.com/web-development/minify-css-and-javascript-optimizer-review/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 08:58:01 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[minify]]></category>
		<category><![CDATA[optimize]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress 2.7]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=419</guid>
		<description><![CDATA[A few days ago I read a post on Webmaster Source about Minify, &#8216;a PHP5 app that can combine multiple CSS or Javascript files, compress their contents (i.e. removal of unnecessary whitespace/comments), and serve the results with HTTP encoding (gzip/deflate) and headers that allow optimal client-side caching.&#8217;
Being the enthusiast that I am, I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I read a post on <a href="http://www.webmaster-source.com/2009/01/26/minify-compress-your-javascript-and-css/" rel="nofollow" >Webmaster Source</a> about <a href="http://code.google.com/p/minify/" rel="nofollow" >Minify</a>, &#8216;a PHP5 app that can combine multiple CSS or Javascript files, compress their contents (i.e. removal of unnecessary whitespace/comments), and serve the results with HTTP encoding (gzip/deflate) and headers that allow optimal client-side caching.&#8217;</p>
<p>Being the enthusiast that I am, I decided to implement it on my blog.  This post will report my experiences integrating Minify with my WordPress blog.<br />
<span id="more-419"></span></p>
<h3>Installing Minify</h3>
<ol>
<li>Download <a href="http://code.google.com/p/minify/"rel="nofollow" >Minify</a> and upload it as a new folder under your web document root.  For example:
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>user<span style="color: #000000; font-weight: bold;">/</span>public_html<span style="color: #000000; font-weight: bold;">/</span>min<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>
</li>
<li>Create a cache directory and make sure that it is writeable by apache.  For example:
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>user<span style="color: #000000; font-weight: bold;">/</span>public_html<span style="color: #000000; font-weight: bold;">/</span>min<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>
</li>
<li>Set the &#8220;$min_cachePath&#8221; variable in min/config.php to the absolute path of your cache directory</li>
<li>Point your browser to this location (e.g. http://example.com/min/)</li>
</ol>
<p>That&#8217;s it! The application is ready for use.</p>
<h3>Features</h3>
<ul>
<li>URI Builder used for adding files CSS and JS files manually.<a href="http://omninoggin.com/wp-content/uploads/2009/01/minify_url_builder.png"rel="nofollow" ><img class="alignnone size-medium wp-image-420" title="Minify URL Builder" src="http://omninoggin.com/wp-content/uploads/2009/01/minify_url_builder-300x77.png" alt="Minify URL Builder" width="300" height="77" /></a></li>
<li>Bookmarklet for automatically fetching CSS and JS entries from any page (very cool!).  I can just visit any one of my pages, click on the bookmarklet, and then I am brought to a page with the URI Builder all filled-in.<br />
<a href="http://omninoggin.com/wp-content/uploads/2009/01/minify_bookmarklet.png"rel="nofollow" ><img class="alignnone size-medium wp-image-421" title="Minify Bookmarklet" src="http://omninoggin.com/wp-content/uploads/2009/01/minify_bookmarklet-300x96.png" alt="Minify Bookmarklet" width="300" height="96" /></a></li>
<li>HTTP request API for retrieving CSS &amp; JS files as a group.<br />
<a href="http://omninoggin.com/wp-content/uploads/2009/01/minify_standard_url.png"rel="nofollow" ><img class="alignnone size-medium wp-image-422" title="Minify Standard Url" src="http://omninoggin.com/wp-content/uploads/2009/01/minify_standard_url-300x64.png" alt="Minify Standard Url" width="300" height="64" /></a></li>
<li>Ability to preset groups of CSS &amp; JS files for simpler CSS &amp; JS references<br />
<a href="http://omninoggin.com/wp-content/uploads/2009/01/minify_group_url.png"rel="nofollow" ><img class="alignnone size-medium wp-image-423" title="Minify Group URL" src="http://omninoggin.com/wp-content/uploads/2009/01/minify_group_url-300x83.png" alt="Minify Group URL" width="300" height="83" /></a></li>
</ul>
<h3>Integration with WordPress</h3>
<p><div class="note"><div class="notetip"><strong>Update 3/31/2009:</strong><br />
I wrote a plugin called <a href="http://omninoggin.com/wordpress-plugins/wp-minify-wordpress-plugin/">WP Minify</a> that will automatically integrate this for you.  Check it out!</div></div><br />
The best way to integrate is to setup a couple of preset groups (one for your CSS files and one for your JS files).  To do so, modify min/groupsConfig.php to include all the CSS &amp; JS files that you want to consolidate and compress.  Mine looks like the following:</p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'js'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'//wp-content/plugins/fun-with-sidebar-tabs/js/script.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/contact-form-7/contact-form-7.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/themes/omninoggin/onload.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/wp-greet-box/js/functions.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/wp-greet-box/js/onload.js'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'css'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'//wp-content/themes/omninoggin/style.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/contact-form-7/stylesheet.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/friendfeed-activity-widget/widget.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/wp-note/style.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/wp-pagenavi/pagenavi-css.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/wp-syntax/wp-syntax.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/anti-adblock/css/style.css'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'//wp-content/plugins/wp-greet-box/css/wp-greet-box.css'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
<p>I can then place the following into the &lt;head&gt; tag in header.php:</p>
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">&nbsp;</pre></div></div>
<p>and the following near the end of footer.php:</p>
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/min/g=js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span><span style="color: #808080; font-style: italic;">&lt;!--mce:0--&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>
<p>Next you will need to remove all references to the CSS &amp; JS files that you have consolidated and compressed.  This is probably the most painful step that you have to do as you will probably have to go through your plugins&#8217; code and comment out lines that print CSS or JS references.</p>
<p><div class="note"><div class="notetip"><strong>Update 3/16/09:</strong><br />
As Boris said in the comment thread, you can also make use of the functions wp_deregister_script() and wp_deregister_style() in your functions.php to unregister plugin JS &amp; CSS references.  If the plugin author is not using these hooks to reference JS &amp; CSS files, they are probably using an action hook to print out the references.  If that&#8217;s the case, Boris also suggested that we can use something like: &#8220;remove_action(&#8216;wp_head&#8217;, &#8216;add_style_to_head_function&#8217;);&#8221; to remove any hooked functions for printing JS &amp; CSS references.  And as he said, &#8220;the only real problem is that sometimes plugin authors pack a few additional things into there as well, which you might have to add again through your own custom function.&#8221;</div></div></p>
<h3>Test Results</h3>
<ul>
<li>Before Minify, my homepage takes an average of 6.6s to load 348.5 KB with 36 HTTP requests.<br />
<a href="http://omninoggin.com/wp-content/uploads/2009/01/before_graph.png"rel="nofollow" ><img class="alignnone size-medium wp-image-424" title="OMNINOGGIN Before Minify Graph" src="http://omninoggin.com/wp-content/uploads/2009/01/before_graph-300x234.png" alt="OMNINOGGIN Before Minify Graph" width="300" height="234" /></a><a href="http://omninoggin.com/wp-content/uploads/2009/01/before_stats.png"rel="nofollow" ><img class="alignnone size-medium wp-image-425" title="OMNINOGGIN Before Minify Stats" src="http://omninoggin.com/wp-content/uploads/2009/01/before_stats-288x300.png" alt="OMNINOGGIN Before Minify Stats" width="288" height="300" /></a></li>
<li>After Minify, my homepage takes an average of 5.6s to load 323.3 KB with 28 HTTP requests.<br />
<a href="http://omninoggin.com/wp-content/uploads/2009/01/after_graph.png"rel="nofollow" ><img class="alignnone size-medium wp-image-426" title="OMNINOGGIN After Minify Graph" src="http://omninoggin.com/wp-content/uploads/2009/01/after_graph-300x183.png" alt="OMNINOGGIN After Minify Graph" width="300" height="183" /></a><a href="http://omninoggin.com/wp-content/uploads/2009/01/after_stats.png"rel="nofollow" ><img class="alignnone size-medium wp-image-427" title="OMNINOGGIN After Minify Stats" src="http://omninoggin.com/wp-content/uploads/2009/01/after_stats-288x300.png" alt="OMNINOGGIN After Minify Stats" width="288" height="300" /></a></li>
</ul>
<h3>Bottom Line (or Will Minify Benefit My Site?)</h3>
<p>It depends on the site.  In my case, I was only able to save 8 HTTP requests.  Minify is a great program, but I don&#8217;t think having to maintain a modified set of plugins is worth the 1 second speed boost.</p>
<p>Also the current WordPress framework (version 2.7) supports the functions wp_enqueue_script and wp_enqueue_style which allow plugin/theme authors to queue CSS and JS reference.  It is very possible that a future WordPress version will implement a Minify-like feature which will automatically consolidate/compress CSS and JS files that queued via these wp_enqueue methods.</p>
<p>Of course that is just my personal speculation.  If your site uses many CSS and JS files then you should definitely try out Minify to see if you are any luckier with your speed boost.</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/minify-css-and-javascript-optimizer-review/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>How to Discourage Visitors from Using AdBlock</title>
		<link>http://omninoggin.com/web-development/how-to-discourage-visitors-from-using-adblock/</link>
		<comments>http://omninoggin.com/web-development/how-to-discourage-visitors-from-using-adblock/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 09:23:35 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[adblock]]></category>
		<category><![CDATA[advertise]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[monetize]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=394</guid>
		<description><![CDATA[If you are a new user and you use any form of advertisement blocking (e.g. AdBlock) on your browser, you would have been greeted with a neat little message saying &#8220;Doh! It appears that you are using AdBlock software&#8230;&#8221;.
The purpose of this post is to show you how to create such a message for your [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://omninoggin.com/wp-content/uploads/2009/01/disable_adblock.png" alt="How to disable AdBlock" title="How to disable AdBlock" width="258" height="186" class="alignright size-full wp-image-399" /></a>If you are a new user and you use any form of advertisement blocking (e.g. AdBlock) on your browser, you would have been greeted with a neat little message saying &#8220;Doh! It appears that you are using AdBlock software&#8230;&#8221;.</p>
<p>The purpose of this post is to show you how to create such a message for your own website.  I had this idea from a comment I found on one of my favorite blogs (Webmaster Source) regarding <a href="http://www.webmaster-source.com/2008/12/28/how-to-keep-adblock-from-hiding-your-ads/" rel="nofollow" >combating AdBlock</a>.</p>
<p>Before I go on, let me say that <strong>I am not interested in discussing/debating the use and ethics of AdBlock software in depth in this post</strong>.  I&#8217;m planning on writing a post with my research and data on the effects of discouraging AdBlock use in a later post, so let&#8217;s save that discussion for another time.   For now I would like you to evaluate the pros and cons of this mod and decide for yourself if you would like to install the mod or not.<br />
<span id="more-394"></span><br />
<div class="note"><div class="noteclassic"></p>
<h4>Update 1/11/2009</h4>
<p>
I have created a WordPress plugin to do this.  Just activate and go.  Check it out here, <a href="http://omninoggin.com/projects/wordpress-plugins/anti-adblock-wordpress-plugin/">Anti-AdBlock WordPress Plugin</a>.
</p>
<p></div></div></p>
<h3>Pros</h3>
<ul>
<li>Makes your visitors aware that your website is funded by advertisements.</li>
<li>Visitors are encouraged to turn off their AdBlock software for your website.</li>
</ul>
<h3>Cons</h3>
<ul>
<li>The mod is written using jQuery so it will not have any effect on browsers with javascript disabled.</li>
<li>It does not guarantee that the visitor will disable AdBlock on your site.</li>
</ul>
<h3>Installation</h3>
<ol>
<li>Insert the following tag into your theme.  This div block will be populated with the AdBlock message when AdBlock usage is detected.  For my WordPress installation, I placed it just above my main content div block in header.php.
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;content_adblock_message&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display:none&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>
</li>
<li>Download the following <a href="http://omninoggin.com/wp-content/themes/omninoggin/images/ad/banner.gif" rel="nofollow">bait banner</a> and put it into a directory called &#8220;ad&#8221; on your server.  For example,<br />
<blockquote><p>&#8220;http://omninoggin.com/wp-content/themes/omninoggin/images/<strong>ad</strong>/banner.gif&#8221;.</p></blockquote>
</li>
<li>Refer to the &#8220;bait banner&#8221; image anywhere in your theme. Make sure your set the IMG &#8216;id=&#8221;banner&#8221;&#8216;.  For example:
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;banner&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/path/to/ad/banner.gif&quot;</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>
</li>
<li>Download the following <a href='http://omninoggin.com/wp-content/uploads/2009/01/onload.js' rel="nofollow">onload.js</a> javascript and place it anywhere on your server.</li>
<li>Open onload.js to modify the message if necessary.</li>
<li>Refer to jQuery library and onload.js, by add the following lines into your footer.
<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/path/to/onload.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>
</li>
</ol>
<h3>Testing</h3>
<ol>
<li>Try visiting your site with AdBlock on.  You should see the AdBlock message.</li>
<li>Disable AdBlock and refresh the page.  You should not see the AdBlock message.</li>
</ol>
<h3>WordPress Plugin?</h3>
<p>I&#8217;ve already received a request from one person that I should package this into a plugin.  Would anybody else like to request this?  The more number of requests makes it higher priority on my to-do list <img src='http://omninoggin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/how-to-discourage-visitors-from-using-adblock/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>My Bot Trap in Action</title>
		<link>http://omninoggin.com/web-development/my-bot-trap-in-action/</link>
		<comments>http://omninoggin.com/web-development/my-bot-trap-in-action/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 06:49:18 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Email Addresses]]></category>
		<category><![CDATA[Fake Addresses]]></category>
		<category><![CDATA[Harvester]]></category>
		<category><![CDATA[Infinite Loop]]></category>
		<category><![CDATA[Poison]]></category>
		<category><![CDATA[Recursively]]></category>
		<category><![CDATA[Scraper]]></category>
		<category><![CDATA[Spammers]]></category>
		<category><![CDATA[Traps]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=204</guid>
		<description><![CDATA[
Previously I wrote a post about how to list poison email harvesters.  Today I discovered that an unknown harvester/scraper bot has stumbled into my one of my traps.  Here is the description of the bot:
IP:82.230.123.141
Host: bne75-7-82-230-123-141.fbx.proxad.net
User agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
From the log snapshot (image), [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://omninoggin.com/wp-content/uploads/2008/06/bottrap.png'><img src="http://omninoggin.com/wp-content/uploads/2008/06/bottrap-246x300.png" alt="" title="bottrap" width="246" height="300" class="alignright size-medium wp-image-205" /></a><br />
Previously I wrote a post about <a href="http://omninoggin.com/2008/05/30/list-poisoning-email-harvesters/">how to list poison email harvesters</a>.  Today I discovered that an unknown harvester/scraper bot has stumbled into my one of my traps.  Here is the description of the bot:<br/></p>
<blockquote><p>
IP:82.230.123.141<br />
Host: bne75-7-82-230-123-141.fbx.proxad.net<br />
User agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
</p></blockquote>
<p>From the <a href='http://omninoggin.com/wp-content/uploads/2008/06/bottrap.png' rel='nofollow'>log snapshot</a> (image), you can see that the bot had recursively crawl through 14464 pages, harvested anywhere between 5 &#8211; 20 fake email addresses per page (that&#8217;s about 12 * 14464 = 173,568 emails harvested), and wasted nearly 10 minutes on my site before deciding that it&#8217;s done.  You can see that the last link the bot visited was something that looks like this:</p>
<blockquote>
<p>http://omninoggin.com/suspicious/8864/1530/7374/527/3510/9061/8198/9981/3367/1751/5075/1765/7282/4842/1710/3655/614/9951/3183/3609/3731/9430/7682/6298/2287/683/3370/5633/4187/8842/1852/5984/7767/6037/7675/3984/4646/7823/8462/1793/6556/3054/1362/3111/3407/8182/7374/169/7738/158/2802/5438/7230/9552/1384/7538/index.php</p>
</blockquote>
<p><span id="more-204"></span><br />
This is infinite loop at its finest <img src='http://omninoggin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  Not only that the bot wasted its time spidering my site, the bot has probably added these 170,000 fake email addresses to the master spam list somewhere in the net.  Now spam bots referring to that master list in the other end will waste even more time and resources spamming these fake addresses.<br/><br />
If you like the results, please join me in sticking it to these harvesters/spammers by installing my bot trap.  Please also let me know when you&#8217;ve caught a live one like I did.  It&#8217;s entertaining to hear these stories.</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/my-bot-trap-in-action/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Completed OMNINOGGIN Server Migration</title>
		<link>http://omninoggin.com/web-development/completed-omninoggin-server-migration/</link>
		<comments>http://omninoggin.com/web-development/completed-omninoggin-server-migration/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 03:04:30 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[Counterstrike Source]]></category>
		<category><![CDATA[dedicated server]]></category>
		<category><![CDATA[Drawback]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[hosted]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Hosting Server]]></category>
		<category><![CDATA[Hosting Services]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Maintenance Mode]]></category>
		<category><![CDATA[Mode Screen]]></category>
		<category><![CDATA[Monster Machine]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Op Code]]></category>
		<category><![CDATA[Page Generation]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Power Outage]]></category>
		<category><![CDATA[proxy cache]]></category>
		<category><![CDATA[self-hosting]]></category>
		<category><![CDATA[Server Migration]]></category>
		<category><![CDATA[shared-hosting]]></category>
		<category><![CDATA[Speed Gain]]></category>
		<category><![CDATA[Speed Loss]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[Static File]]></category>
		<category><![CDATA[Svn]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[web hosting]]></category>
		<category><![CDATA[web server]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=184</guid>
		<description><![CDATA[
I apologize if you have visited earlier today and found the Maintenance-Mode screen.  I was moving this blog from a self-hosted dedicated server to a shared-hosting server.  In this post, I will discuss the reasons for my decision and the switching experience.
Here are some reasons why I made the switch (Pros):
I&#8217;ve been getting [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://omninoggin.com/wp-content/uploads/2008/06/480552_cmts.jpg" alt="Server Migration" title="Server Migration" class="alignright size-medium wp-image-186" height="225" width="300"><br />
I apologize if you have visited earlier today and found the Maintenance-Mode screen.  I was moving this blog from a self-hosted dedicated server to a shared-hosting server.  In this post, I will discuss the reasons for my decision and the switching experience.<br />
Here are some reasons why I made the switch (<strong>Pros</strong>):</p>
<ol>
<li>I&#8217;ve been getting more readers lately so my bandwidth was almost reaching capacity.  Shared-hosting is the cheapest way to get decent burstable bandwidth.</li>
<li>I wanted to start focusing more on WordPress and less on FreeBSD.  Making this switch will alleviate me from having to maintain/troubleshoot low-level system things, leaving me with more time to focus on WordPress development &amp; discussion.</li>
<p><span id="more-184"></span></p>
<li>I want to experience the limitations of a shared-host WordPress blog, so I can develop more effective plugins.</li>
<li>I want my site to be up in the event of a power outage.</li>
<li>I want my files to be securely stored in a remote location.</li>
<li>*Bonus* I wanted to turn my dedicated machine into a CounterStrike Source Server.</li>
</ol>
<p>After the switch, I immediately noticed that I couldn&#8217;t do nearly as many things as I used to be able to do before.  Here are the things that I can no longer after switching to a shared-host (<strong>Cons</strong>):</p>
<ol>
<li>Use eAccelerator to cache my PHP op-code.  Because of this, my page generation time doubled from ~0.3s to ~0.6s.  Even though this is the case, I believe the switch was a good move, since my speed loss of ~0.3 is overshadowed by the speed gain from the new bandwidth connection.  The switch should deliver a more pleasant experience for my readers.</li>
<li>Use Varnish as a proxy caching server.  Because of this, image and other static file requests will always hit the httpd process, which making the httpd process busier than it used to be when Varnish is installed.  But again, this drawback is overshadowed by the monster machine that this site is now hosted on and the huge bandwidth connection.</li>
<li>Optimize Apache &amp; MySQL myself.  I can live without this, but it would been nice to be able to optimize Apache &amp; MySQL myself.
	</li>
<li>Use SSH. I&#8217;ve requested SSH access but this was not turned on by default.  I will update this list with more drawbacks as soon as I get SSH access.  Potentially, these tools might not be available: <strike>SVN and symbolic links</strike>.  <strong>Update:</strong>  It turns out that after poking around on the net, I was able to get SVN to work on a shared host account using solutions found in <a href="http://www.hostmonsterforum.com/showthread.php?t=1294&amp;highlight=subversion" rel="nofollow" >a forum thread</a> and <a href="http://joemaller.com/2008/01/29/how-to-install-subversion-on-a-shared-host/" rel="nofollow" >Joe Maller&#8217;s Blog</a>.  Here is my <a href="http://omninoggin.com/wp-content/uploads/2008/06/install_svn.sh"><strong>SVN install script</strong>.</a>  Just run it from your home directory to get SVN working on a shared host account.</li>
</ol>
<p>Overall switching hosts is not that difficult (just a bit time-consuming if it&#8217;s your first time).  Luckily I was able to follow a great <a href="http://www.webmaster-source.com/2008/06/04/moving-from-server-to-server-a-guide-to-switching-hosts/" rel="nofollow" >checklist for host switching</a> written by Matt Harzewski.  I believe that everything should be working, but please let me know (via the About page) if you run into any problems with the website.</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/completed-omninoggin-server-migration/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>List Poisoning Email Harvesters</title>
		<link>http://omninoggin.com/web-development/list-poisoning-email-harvesters/</link>
		<comments>http://omninoggin.com/web-development/list-poisoning-email-harvesters/#comments</comments>
		<pubDate>Fri, 30 May 2008 09:28:12 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Anti Spam]]></category>
		<category><![CDATA[bot trap]]></category>
		<category><![CDATA[bots]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Email Addresses]]></category>
		<category><![CDATA[Email Harvesters]]></category>
		<category><![CDATA[Email List]]></category>
		<category><![CDATA[Email Spam]]></category>
		<category><![CDATA[Fake Addresses]]></category>
		<category><![CDATA[Fake Email]]></category>
		<category><![CDATA[Fight Spam]]></category>
		<category><![CDATA[Harvesters]]></category>
		<category><![CDATA[Htaccess]]></category>
		<category><![CDATA[list poisoning]]></category>
		<category><![CDATA[Lojack]]></category>
		<category><![CDATA[Malicious Bots]]></category>
		<category><![CDATA[Spambots]]></category>
		<category><![CDATA[web server]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=167</guid>
		<description><![CDATA[
You may not know it, but your site is probably being regularly harvested for email addresses.  In this post I will show you how to easily help fight email spam using a Lojack technique called List Poisoning (see previous post for more Lojack anti-spam philosophy).  Though this is not a new technique, it [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://omninoggin.com/wp-content/uploads/2008/06/kobe-607596-l-300x225.jpg" alt="" title="Spam Cans" width="300" height="225" class="alignright size-medium wp-image-187" /><br />
You may not know it, but your site is probably being regularly harvested for email addresses.  In this post I will show you how to easily help fight email spam using a Lojack technique called List Poisoning (see <a href="http://omninoggin.com/2008/05/23/comments-were-broken-recently-its-fixed-now/">previous post</a> for more Lojack anti-spam philosophy).  Though this is not a new technique, it is definitely worth spreading the word and implementing.<br/><br />
The goal here is to pollute the harvester&#8217;s email list with fake email addresses and fake recursive links.  In doing so, the harvester will waste time and resources harvesting and spamming fake addresses.  (<a href="http://omninoggin.com/2008/06/17/my-bot-trap-in-action/">see this in action</a>)<br/><br />
In the demo below, you will notice that the first three links are recursive links that will just redirect to the same index.php.  The next set of links will be fake email addresses generated for harvesters.<br/><span id="more-167"></span><br />
<strong>Demo:</strong> <a href='http://omninoggin.com/suspicious' rel="nofollow">http://omninoggin.com/suspicious</a><br/><br />
<strong>Download:</strong> <a href='http://omninoggin.com/wp-content/uploads/2008/05/list-poisoning.zip' rel="nofollow">List Poisoning Package</a><br/><br />
<strong>Installation</strong></p>
<ol>
<li>Unpack list-poisoning.zip into a directory on your web server.  Make sure to name the directory something unique (i.e. don&#8217;t use &#8220;spamtrap/&#8221; or anything that describes its funcionality).</li>
<li>Open .htaccess and modify<br />
<blockquote><p>
&#8220;RewriteRule . /suspicious/index.php [L]&#8221;
</p></blockquote>
<p>to</p>
<blockquote><p>
&#8220;RewriteRule . /youruniquedirectory/index.php [L]&#8221;
</p></blockquote>
</li>
<li>Place a link on your site that links to this new directory.</li>
<li>You may make this link invisible to visitors by applying the following CSS style on the link:
<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.your_unique_class</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>
</li>
<li>Verify that it works by visiting your trap directory on the web browser and clicking on some recursive links to make sure that you can recurse.  For example, my trap is located at <a href="http://omninoggin.com/suspicious" rel="nofollow">http://omninoggin.com/suspicious</a>.</li>
</ol>
<p>That should be all!  As always, if you have a better way of doing this, or have tips/tricks on List Poisoning, then please share in comments.</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/list-poisoning-email-harvesters/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Comments Were Broken Recently. It&#8217;s Fixed Now.</title>
		<link>http://omninoggin.com/web-development/comments-were-broken-recently-its-fixed-now/</link>
		<comments>http://omninoggin.com/web-development/comments-were-broken-recently-its-fixed-now/#comments</comments>
		<pubDate>Fri, 23 May 2008 23:19:49 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Anti Spam]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[comment]]></category>
		<category><![CDATA[Honey Pot]]></category>
		<category><![CDATA[Link Generation]]></category>
		<category><![CDATA[Lojack]]></category>
		<category><![CDATA[Mark Pilgrim]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Project Honeypot]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Spamfree]]></category>
		<category><![CDATA[the club]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wp-spamfree]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=163</guid>
		<description><![CDATA[
For those who have tried to comment on my posts but were not able to, I would like to sincerely apologize.  If you are a returning reader/commenter, thank you for your patience and your continued reading loyalty.  I would also like to thank Agam Rosyidi for notifying me that my comments were broken [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://omninoggin.com/wp-content/uploads/2008/06/tool_crescent_macro_261710_l-300x221.jpg" alt="" title="tool_crescent_macro_261710_l" width="300" height="221" class="alignright size-medium wp-image-189" /><br />
For those who have tried to comment on my posts but were not able to, I would like to sincerely apologize.  If you are a returning reader/commenter, thank you for your patience and your continued reading loyalty.  I would also like to thank Agam Rosyidi for notifying me that my comments were broken on this blog.  In the future, if you notice anything wrong with my site, I would greatly appreciate it if you let me know via my about page.<br/><br />
On the actual problem itself, it turned out that WP-SpamFree was not working with WP-Super-Cache when the cached page is being dynamically delivered.  I did not look too much into why this was the case, but comments now work after disabling WP-SpamFree.  I have removed this plugin and I don&#8217;t plan on re-enabling WP-SpamFree in the future or making it work with WP-Super-Cache because of the philosophies in this <a href="http://diveintomark.org/archives/2002/10/29/club_vs_lojack_solutions" rel="nofollow" >great paper</a> by Mark Pilgrim.  I highly recommend reading this timeless article before you think about combatting spam.<span id="more-163"></span><br/><br />
As an overview, Mark&#8217;s article uses the Club and LoJack as a metaphor for the two main methods of combatting spam.  After reading the article, you will see why WP-SpamFree works like the Club, and why a LoJack method is a much more desireable solution to spam detection.  Some examples of LoJack solutions include:</p>
<ol>
<li>Akismet</li>
<li>TypePad AntiSpam</li>
<li>Project Honey Pot</li>
<li>List Poisoning</li>
</ol>
<p>I have deployed all of these solutions on this blog, so I believe that I should be in the clear.  I will be writing a couple follow up articles on Project Honey Pot and List Poisoning.  Please stay tuned!<br/><br />
Also, do you know of any other LoJack anti-spam solutions.  Do have any LoJack anti-spam ideas?  Please share in comments.</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/comments-were-broken-recently-its-fixed-now/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Block Unwanted Spam Bots Using Varnish VCL</title>
		<link>http://omninoggin.com/web-development/block-unwanted-spam-bots-using-varnish-vcl/</link>
		<comments>http://omninoggin.com/web-development/block-unwanted-spam-bots-using-varnish-vcl/#comments</comments>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Anti Spam]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[bots]]></category>
		<category><![CDATA[Client Ip]]></category>
		<category><![CDATA[Client Request]]></category>
		<category><![CDATA[Content Server]]></category>
		<category><![CDATA[dedicated hosting]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[Harvesters]]></category>
		<category><![CDATA[Htaccess]]></category>
		<category><![CDATA[Proxy Configurations]]></category>
		<category><![CDATA[Regular Expressions]]></category>
		<category><![CDATA[Scrapers]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Spambots]]></category>
		<category><![CDATA[Unwanted Spam]]></category>
		<category><![CDATA[user agent]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[Vcl]]></category>
		<category><![CDATA[web server]]></category>
		<guid isPermaLink="false">http://omninoggin.com/?p=159</guid>
		<description><![CDATA[
Every time I search the web for information on how to block spam bots, scrapers, and harvesters, I always see an Apache .htaccess file or some code to dump into httpd.conf to achieve this.  I&#8217;m a bit against using this method for blocking evil bots.  I do respect Apache for being a flexible [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://omninoggin.com/wp-content/uploads/2008/06/robots-toys-421849-l-300x199.jpg" alt="" title="robots-toys-421849-l" width="300" height="199" class="alignright size-medium wp-image-190" /><br />
Every time I search the web for information on how to block spam bots, scrapers, and harvesters, I always see an Apache .htaccess file or some code to dump into httpd.conf to achieve this.  I&#8217;m a bit against using this method for blocking evil bots.  I do respect Apache for being a flexible &#038; modular web server (that&#8217;s why I still use it), but I do not have much to boast about Apache&#8217;s speed and efficiency.<br/><br />
To achieve the same purpose on my server with greater efficiency, I made use of my <a href="http://omninoggin.com/2007/09/10/setting-up-a-freebsd-62-web-server-proxy-caching-part-7/">Varnish reverse proxy</a> configurations (located under /usr/local/etc/varnish/default.vcl).<br/><br />
In this post, I will only be discussing about vcl_recv subroutine, which gets called when a client request is received.<br/><span id="more-159"></span><br />
First of all, I have to create a white list.  Here for example, I had to make use of the <strong>client.ip</strong> variable to allow livejournal&#8217;s URI::Fetch agent to get my site to lookup my OpenID servers.  I also allowed scraper scripts from my own in-house server.</p>
<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## Called when a client request is received</span>
<span style="color: #000000; font-weight: bold;">sub</span> vcl_recv <span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;"># block list</span>
  <span style="color: #666666; font-style: italic;"># 204.9.177.18 = livejournal.com</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> client<span style="color: #339933;">.</span>ip <span style="color: #339933;">!=</span> <span style="color: #ff0000;">&quot;204.9.177.18&quot;</span> <span style="color: #339933;">&amp;&amp;</span> client<span style="color: #339933;">.</span>ip <span style="color: #339933;">!=</span> <span style="color: #ff0000;">&quot;192.168.2.102&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>
<p>I then added all the user agent regular expressions that I do not like.</p>
<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;">    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>
      req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;^$&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;^Java&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;^Jakarta&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;IDBot&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;id-search&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;User-Agent&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;compatible ;&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;ConveraCrawler&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;^Mozilla$&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;libwww&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;lwp-trivial&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;curl&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;PHP/&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;urllib&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;GT:WWW&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Snoopy&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;MFC_Tear_Sample&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;HTTP::Lite&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;PHPCrawl&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;URI::Fetch&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Zend_Http_Client&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;http client&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;PECL::HTTP&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;panscient.com&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;IBM EVV&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Bork-edition&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Fetch API Request&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;PleaseCrawl&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;[A-Z][a-z]{3,} [a-z]{4,} [a-z]{4,}&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;layeredtech.com&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;WEP Search&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Wells Search II&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Missigua Locator&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;ISC Systems iRc Search 2.1&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Microsoft URL Control&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;Indy Library&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;8484 Boston Project v 1.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Atomic_Email_Hunter/4.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;atSpider/1.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;autoemailspider&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;China Local Browse 2.6&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;ContactBot/0.2&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;ContentSmartz&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DataCha0s/2.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DataCha0s/2.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DBrowse 1.4b&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DBrowse 1.4d&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Demo Bot DOT 16b&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Demo Bot Z 16b&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DSurf15a 01&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DSurf15a 71&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DSurf15a 81&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;DSurf15a VA&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;EBrowse 1.4b&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Educate Search VxB&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;EmailSiphon&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;EmailWolf 1.00&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;ESurf15a 15&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;ExtractorPro&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Franklin Locator 1.8&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;FSurf15a 01&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Full Web Bot 0416B&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Full Web Bot 0516B&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Full Web Bot 2816B&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Guestbook Auto Submitter&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Industry Program 1.0.x&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;ISC Systems iRc Search 2.1&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;IUPUI Research Bot v 1.9a&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;LARBIN-EXPERIMENTAL (efp@gmx.net)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;LetsCrawl.com/1.0 +http://letscrawl.com/&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Lincoln State Web Browser&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;LMQueueBot/0.2&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;LWP::Simple/5.803&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mac Finder 1.0.xx&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;MFC Foundation Class Library 4.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Microsoft URL Control - 6.00.8xxx&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Missauga Locate 1.0.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Missigua Locator 1.9&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Missouri College Browse&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mizzu Labs 2.2&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mo College 1.9&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/2.0 (compatible; NEWT ActiveX; Win32)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/3.0 (compatible; Indy Library)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/4.0 (compatible; Advanced Email Extractor v2.xx)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/4.0 (compatible; Iplexx Spider/1.0 http://www.iplexx.at)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; DTS Agent&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/4.0 efp@gmx.net&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Mozilla/5.0 (Version: xxxx Type:xx)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;MVAClient&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;NameOfAgent (CMS Spider)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;NASA Search 1.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Nsauditor/1.x&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;PBrowse 1.4b&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;PEval 1.4b&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Poirot&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Port Huron Labs&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Production Bot 0116B&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Production Bot 2016B&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Production Bot DOT 3016B&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Program Shareware 1.0.2&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;PSurf15a 11&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;PSurf15a 51&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;PSurf15a VA&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;psycheclone&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;RSurf15a 41&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;RSurf15a 51&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;RSurf15a 81&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;searchbot admin@google.com&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;ShablastBot 1.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;snap.com beta crawler v0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Snapbot/1.0&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;sogou develop spider&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Sogou Orion spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;sogou spider&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;sohu agent&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;SSurf15a 11&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;TSurf15a 11&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Under the Rainbow 2.2&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;VadixBot&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;WebVulnCrawl.blogspot.com/1.0 libwww-perl/5.803&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;Wells Search II&quot;</span>
      <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>user<span style="color: #339933;">-</span>agent <span style="color: #339933;">==</span> <span style="color: #ff0000;">&quot;WEP Search 00&quot;</span>
    <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      error <span style="color: #cc66cc;">403</span> <span style="color: #ff0000;">&quot;You are banned from this site.  Please contact via a different client configuration if you believe that this is a mistake.&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>
<p>As a bonus, I added the following to prevent hotlinking from people I don&#8217;t know. (code adapted from <a href="http://turbochargedcms.com/2007/04/weathering-heavy-traffic-with-wordpress-and-turbocharged/" rel="nofollow" >Turbocharged Blog</a>)</p>
<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;">  <span style="color: #666666; font-style: italic;"># if images, prevent hotlinking for some, permit for some</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> req<span style="color: #339933;">.</span>url <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;wp-content/uploads/(images|200.)&quot;</span> <span style="color: #339933;">||</span> req<span style="color: #339933;">.</span>url <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;wp-content/themes/[a-z-]/images&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>referer <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;^http(s)?://&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>req<span style="color: #339933;">.</span>http<span style="color: #339933;">.</span>referer <span style="color: #339933;">~</span> <span style="color: #ff0000;">&quot;^http(s)?://([a-z-]+<span style="color: #000099; font-weight: bold;">\.</span>)?(omninoggin|postnerd|twidded|ciciscafe)<span style="color: #000099; font-weight: bold;">\.</span>com&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        error <span style="color: #cc66cc;">403</span> <span style="color: #ff0000;">&quot;Hotlinking is forbidden&quot;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  lookup<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>
<p>Simple isn&#8217;t it?  Now your Apache process will not have to deal with these spammers at all and save memory / CPU cycles for more important tasks like executing PHP.</p>
<p>Do you have a better bots list?  Do you have a better method of doing this?  Please share below!</p>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/block-unwanted-spam-bots-using-varnish-vcl/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>The Simple Explaination and Use of SSH keys</title>
		<link>http://omninoggin.com/web-development/the-simple-explaination-and-use-of-ssh-keys/</link>
		<comments>http://omninoggin.com/web-development/the-simple-explaination-and-use-of-ssh-keys/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 04:03:17 +0000</pubDate>
		<dc:creator>Thaya Kareeson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[id_rsa]]></category>
		<category><![CDATA[keys]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[private key]]></category>
		<category><![CDATA[public key]]></category>
		<category><![CDATA[ssh]]></category>
		<guid isPermaLink="false">http://omninoggin.com/2007/09/24/the-simple-explaination-and-use-of-ssh-keys/</guid>
		<description><![CDATA[What are SSH Keys? (Easier than what you learned in Computer Security class)
SSH keys are one of the common authentication techniques people use to log into a Unix session (the most common authentication technique is login &#38; password).
If you are like me, you get sick and tired of typing in your login and password every [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What are SSH Keys?</strong> (Easier than what you learned in Computer Security class)</p>
<p>SSH keys are one of the common authentication techniques people use to log into a Unix session (the most common authentication technique is login &amp; password).</p>
<p>If you are like me, you get sick and tired of typing in your login and password every single time you open a new terminal to connect to a Unix session. This is where SSH keys help me everyday by letting me authenticate against the key once, and every new shell session I start will authenticate using the same SSH key.</p>
<p>All you have to do is create a pair of public and private keys. In this analogy, the public key is the house lock and the private key is equivalent to the house key.</p>
<blockquote><p>Private Key = House key</p>
<p>Public Key = House locks</p></blockquote>
<p>Using an SSH key to authenticate is like using one key for all the doors in your house instead of having a bunch of combination padlocks (with the same unlock combination) on all your doors.<br />
<span id="more-64"></span><br />
<strong>How to Setup SSH Key Authentication (using OpenSSH)<br />
</strong></p>
<ol>
<li>Run ssh-keygen and follow prompt (# ssh-keygen -t rsa -b 2048)</li>
<li>Save the key as id_rsa under your ~/.ssh/ directory</li>
<li>Create a password for the key pair</li>
<li>You will get two files:
<ol>
<li>id_rsa (this is your private key)</li>
<li>id_rsa.pub (this is your public key)</li>
</ol>
</li>
<li>Log into your desired machine (using login &amp; password this time)</li>
<li>Append the contents of your local id_rsa.pub into the machine&#8217;s ~/.ssh/authorized_keys</li>
<li>Log out</li>
<li>Log back in and you should notice that you will not need to type the username and password anymore</li>
<li>Repeat this with any other number of machines you log into often</li>
</ol>
<hr />
<small>Copyright &copy; Thaya Kareeson 2007-2009. <a href="http://omninoggin.com/terms-of-use/">Terms of Use</a>.<br /> This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright.<br/>(Digital Fingerprint: 3c9448923b0370185951175e004b25f5 (38.107.191.94) )</small>]]></content:encoded>
			<wfw:commentRss>http://omninoggin.com/web-development/the-simple-explaination-and-use-of-ssh-keys/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
