<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>There is no HTTP code for censorship (but perhaps there should be) &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Fri, 14 Nov 2025 15:55:55 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>There is no HTTP code for censorship (but perhaps there should be) &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[There is no HTTP code for censorship (but perhaps there should be)]]></title>
		<link>https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/</link>
					<comments>https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 08 Jun 2012 18:15:48 +0000</pubDate>
				<category><![CDATA[politics]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=5869</guid>

					<description><![CDATA[To quote  Chris Applegate: &#34;There is no HTTP code for censorship.&#34; But perhaps there should be.  My ISP have recently been ordered to censor The Pirate Bay.  They have done so unwillingly and, it would seem, have complied only with the letter of the ruling.  Their block is, for now, trivial to circumvent.  I am concerned that this censorship will become more prevalent.  As network neutrality…]]></description>
										<content:encoded><![CDATA[<p>To quote  Chris Applegate: "<a href="https://web.archive.org/web/20120819195216/http://www.qwghlm.co.uk/2008/12/09/there-is-no-http-code-for-censorship/">There is no HTTP code for censorship.</a>"
But perhaps there <em>should</em> be.</p>

<p>My ISP have recently been ordered to censor The Pirate Bay.  They have done so unwillingly and, it would seem, have complied only with the letter of the ruling.  Their block is, for now, trivial to circumvent.</p>

<p>I am concerned that this censorship will become more prevalent.  As network neutrality dies, we will see more sites ordered to be blocked by governments who fear what they cannot understand.</p>

<p>However, chief among my concerns is the technical way this censorship is implemented.  At the moment, my ISP serves up an HTTP 403 error.</p>

<pre>$ wget -v thepiratebay.org
Resolving thepiratebay.org... 194.71.107.50
Connecting to thepiratebay.org|194.71.107.50|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
</pre>

<p>As far as I am concerned, this response is <strong>factually incorrect</strong>.</p>

<p>According to the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">W3C Specifications</a>:</p>

<blockquote><p>The 4xx class of status code is intended for cases in which the client seems to have erred.</p></blockquote>

<p>Now, I haven't made an error when making this request.  Furthermore:</p>

<blockquote><p>The server understood the request, but is refusing to fulfill it.</p></blockquote>

<p>In this case, the server did not even see the request.  It was intercepted by my ISP and rejected by them on legal grounds.</p>

<p>The W3C aren't the only people who can define HTTP status codes - <a href="https://web.archive.org/web/20120708195844/https://dev.twitter.com/docs/error-codes-responses">Twitter introduced the 420 code</a> for example. Wikipedia has a fairly <a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes">comprehensive list of HTTP status codes</a>.</p>

<p>So, what HTTP code should ISPs - or others - serve up to indicate to the user that censorship is abound?</p>

<h2 id="1xx"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#1xx">1xx</a></h2>

<blockquote><p>Informational

</p><p>Request received, continuing process

</p><p>This class of status code indicates a provisional response,</p></blockquote>

<h3 id="proposal"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#proposal">Proposal</a></h3>

<p>HTTP 112 - Emergency. Censorship in action.</p>

<p>Censorship is an Internet Emergency and should be treated as such.</p>

<p>112 is the emergency services number throughout Europe (may be confusing / irrelevant for non-Europeans).</p>

<h2 id="2xx"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#2xx">2xx</a></h2>

<blockquote><p>This class of status code indicates that the client's request was successfully received, understood, and accepted.</p></blockquote>

<p>Totally inappropriate. The request was not accepted - even assuming it was successfully received.</p>

<h2 id="3xx"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#3xx">3xx</a></h2>

<blockquote><p>This class of status code indicates that further action needs to be taken by the user agent in order to fulfil the request.</p></blockquote>

<p>Again, probably not appropriate (although one could argue that the user needs take action against her government or ISP).</p>

<h3 id="edit"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#edit">Edit</a></h3>

<p>As <a href="http://yro.slashdot.org/comments.pl?sid=2906113&amp;cid=40271819">suggested by nabsltd on Slashdot</a> the ISP could helpfully tell the user how to proxy around the censorship.</p>

<pre>305 Use Proxy
Location: https://tpb.pirateparty.org.uk/</pre>

<h2 id="4xx"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#4xx">4xx</a></h2>

<blockquote><p>The 4xx class of status code is intended for cases in which the client seems to have erred. </p></blockquote>

<p>Normally, I'd be against placing the error here - however Microsoft have introduced the <a href="http://answers.microsoft.com/en-us/windows/forum/windows_vista-windows_programs/rating-service-unavailable/5dacf4a4-3769-41b1-a8aa-d1ef1e711f66">HTTP 450 status code "Blocked by Parental Controls"</a>
<a href="http://www.flickr.com/photos/girliemac/6513125123/" title="450 - Blocked by Windows Parental Controls by GirlieMac, on Flickr"><img src="https://farm8.staticflickr.com/7151/6513125123_dd582f5c2a_n.jpg" width="320" height="256" alt="450 - Blocked by Windows Parental Controls"></a></p>

<h3 id="proposal"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#proposal">Proposal</a></h3>

<p>HTTP 460 - Blocked by Repressive Regime.</p>

<p>(edit - <a href="http://yro.slashdot.org/comments.pl?sid=2906113&amp;cid=40270621">IonOtter suggests</a> the much more timely HTTP 451.)</p>

<h2 id="5xx"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#5xx">5xx</a></h2>

<blockquote><p>Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has erred or is incapable of performing the request</p></blockquote>

<p>This could be appropriate if it is the server which is performing the censorship.  If Google was forbidden to show pictures to Tienanmen Square, for example.</p>

<h3 id="proposal"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#proposal">Proposal</a></h3>

<p>HTTP 560 - Server is being censored.</p>

<h2 id="9xx"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#9xx">9xx</a></h2>

<p>There are currently no valid HTTP codes in the 9xx range.  I am of the opinion that censorship is such an existential threat to the web that it requires</p>

<h3 id="proposal"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#proposal">Proposal</a></h3>

<p>HTTP 911 - Internet Emergency. The provider of this connection is being forced to censor this request.</p>

<p>Of course, 911 is only the <a href="http://en.wikipedia.org/wiki/Emergency_telephone_number">emergency services number in North America and other places</a> but is sufficiently well known globally to be recognisable.</p>

<h2 id="pick-a-winner"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#pick-a-winner">Pick A Winner</a></h2>

<p>Choose an option or stick a comment in the box below.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/06/httppoll-fs8.png" alt="Which HTTP Status Code Should Represent Censorship? (Poll Closed)
112  16.54%.
460  23.28%.
560  17.52%.
911  27.82%.
Something else  14.83%." width="540" height="942" class="aligncenter size-full wp-image-55437">

<h2 id="update-2012-06-12"><a href="https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/#update-2012-06-12">Update 2012-06-12</a></h2>

<p>The inimitable <a href="http://tbray.org/ongoing">Tim Bray</a> has submitted an <a href="http://datatracker.ietf.org/doc/draft-tbray-http-legally-restricted-status/?include_text=1">RFC to the IETF HTTP working group for HTTP 451</a>.</p>

<p>Ongoing <a href="http://news.ycombinator.com/item?id=4099751">discussion on Hacker News</a>, <a href="http://www.theverge.com/2012/6/12/3080036/tim-bray-http-status-code-451-unavailable-legal">The Verge</a>, and in Spanish on <a href="http://www.meneame.net/story/google-crea-codigo-estado-http-censura-451-unavailable-for-legal">meneame</a> and <a href="http://www.adslzone.net/article8802-codigo-451-la-marca-de-la-censura-que-propone-google-por-normas-como-la-ley-sinde.html">ADSLzone</a>, in Russian on <a href="https://habr.com/en/articles/146376/">habrahabr</a>, in German on <a href="http://netzpolitik.org/2012/http-statuscode-dieser-inhalt-ist-in-ihrem-land-nicht-verfugbar/">NetzPolitik</a>, and in <a href="http://www.numerama.com/magazine/22877-vers-un-code-http-451-pour-signaler-un-blocage-judiciaire.html">French</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=5869&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/06/there-is-no-http-code-for-censorship-but-perhaps-there-should-be/feed/</wfw:commentRss>
			<slash:comments>57</slash:comments>
		
		
			</item>
	</channel>
</rss>
