{"id":1011,"date":"2011-11-16T10:54:11","date_gmt":"2011-11-16T08:54:11","guid":{"rendered":"http:\/\/oldblogs.uct.ac.za\/blog\/big-bytes\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers"},"modified":"2015-08-14T13:18:01","modified_gmt":"2015-08-14T11:18:01","slug":"google-recaptcha-service-via-caching-or-proxy-servers","status":"publish","type":"post","link":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/","title":{"rendered":"Google reCaptcha service via caching or proxy servers"},"content":{"rendered":"<p style=\"margin-bottom: 0in;\">Googles Recaptcha service is great to\r\nget rid of those web bots which enter false information into web\r\nforms. Its great for the elimination of SPAM. In most organizations\r\nthe use of proxy servers or caching servers are used for either\r\ncaching content because of a saturated internet link or for\r\nauthentication and moderation. The \u201crecaptcha\u201d library\r\nunfortunately doesn't cater for the use of the proxy servers and\r\ntherefore we needed to update the library with a bit of PHP proxy\r\ninformation. The error message was \u201c Could not open socket \u201c.\r\nThis means that it had a problem connecting to port 80. This can be\r\none of two reasons, either a host based firewall has blocked port 80\r\nor you have a caching server in place running on the standard proxy\r\nports, 3128 or 8080.<\/p>\r\n<p style=\"margin-bottom: 0in;\">Locate the PHP library file \u201c\r\nrecaptchalib.php \u201c and update the \u201cThe reCAPTCHA server URL's\u201c section with the information\r\nbelow. Set the proxy from false to true and enter the proxy server\r\ninformation.<\/p>\r\n<p style=\"margin-bottom: 0in;\"><\/p>\r\n\r\n<pre class=\"western\"><span style=\"font-size: xx-small;\">define(\"PROXY_HOST\", \"\");   \/\/define proxy\r\ndefine(\"PROXY_PORT\", \"\");   \/\/define port\r\ndefine(\"USE_PROXY\", false); \/\/set this true if you want to use proxy.<\/span><\/pre>\r\n<p style=\"margin-bottom: 0in;\">Now that we have told our PHP script\r\nwhere to look for the proxy server we need to tell the HTTP POST to\r\nsubmit via the proxy server to the reCAPTCHA server. Add the code below to the recaptchalib.php file.<\/p>\r\n<p style=\"margin-bottom: 0in;\"><\/p>\r\n\r\n<pre class=\"western\"><span style=\"font-size: xx-small;\">\/**\r\n * Submits an HTTP POST to a reCAPTCHA server\r\n * @param string $host\r\n * @param string $path\r\n * @param array $data\r\n * @param int port\r\n * @return array response\r\n *\/\r\nfunction _recaptcha_http_post($host, $path, $data, $port = 80) {\r\n\r\n        if(USE_PROXY) {\r\n                        $req = _recaptcha_qsencode ($data);\r\n        $http_request  = \"POST http:\/\/\" . $host . $path . \" HTTP\/1.0rn\";\r\n        $http_request .= \"Host: $hostrn\";\r\n        $http_request .= \"Content-Type: application\/x-www-form-urlencoded;rn\";\r\n        $http_request .= \"Content-Length: \" . strlen($req) . \"rn\";\r\n        $http_request .= \"User-Agent: reCAPTCHA\/PHPrn\";\r\n        $http_request .= \"rn\";\r\n        $http_request .= $req;\r\n\r\n        $response = '';\r\n\r\n        if( false == ( $fs = @fsockopen(PROXY_HOST, PROXY_PORT, $errno, $errstr, 10) ) ) {\r\n                        echo $errno . $errstr;\r\n                die ('Could not open socket to proxy');\r\n        }\r\n                }\r\n        else {\r\n\r\n        $req = _recaptcha_qsencode ($data);\r\n\r\n        $http_request  = \"POST $path HTTP\/1.0rn\";\r\n        $http_request .= \"Host: $hostrn\";\r\n        $http_request .= \"Content-Type: application\/x-www-form-urlencoded;rn\";\r\n        $http_request .= \"Content-Length: \" . strlen($req) . \"rn\";\r\n        $http_request .= \"User-Agent: reCAPTCHA\/PHPrn\";\r\n        $http_request .= \"rn\";\r\n        $http_request .= $req;\r\n\r\n        $response = '';\r\n        if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {\r\n                die ('Could not open socket');\r\n        }\r\n\r\n\r\n        }\r\n\r\n\r\n        fwrite($fs, $http_request);\r\n\r\n        while ( !feof($fs) )\r\n                $response .= fgets($fs, 1160); \/\/ One TCP-IP packet\r\n        fclose($fs);\r\n        $response = explode(\"rnrn\", $response, 3);\r\n                \/\/print_r($response);\r\n        return $response;\r\n}<\/span><\/pre>\r\n&nbsp;\r\n<p style=\"margin-bottom: 0in;\"><span style=\"font-size: xx-small;\">\u00a0<\/span><\/p>\r\n<p style=\"margin-bottom: 0in;\">The reCaptcha service should now send HTTP POST requests via your proxy server.<\/p>\r\n<p style=\"margin-bottom: 0in;\"><\/p>\r\n<p style=\"margin-bottom: 0in;\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Googles Recaptcha service is great to<br \/>\nget rid of those web bots which enter false information into web<br \/>\nforms. Its great for the elimination of SPAM. In most organizations<br \/>\nthe use of proxy servers or caching servers are used for either<br \/>\ncaching content because of a saturated internet link or for<br \/>\nauthentication and moderation. The &ldquo;recaptcha&rdquo; library<br \/>\nunfortunately doesn&#8217;t cater for the use of the proxy servers and<br \/>\ntherefore we needed to update the library with a bit of PHP proxy<br \/>\ninformation. The error message was &ldquo; Could not open socket &ldquo;.<br \/>\nThis means that it had a problem connecting to port 80. This can be<br \/>\none of two reasons, either a host based firewall has blocked port 80<br \/>\nor you have a caching server in place running on the standard proxy<br \/>\nports, 3128 or 8080.\n<\/p>\n<p>Locate the PHP library file &ldquo;<br \/>\nrecaptchalib.php &ldquo; and update the &ldquo;The reCAPTCHA server URL&#8217;s&ldquo;  section with the information<br \/>\nbelow.  Set the proxy from false to true and enter the proxy server<br \/>\ninformation.<\/p>\n<p>&nbsp;<\/p>\n<pre><span>define(\"PROXY_HOST\", \"\");   \/\/define proxy<br>define(\"PROXY_PORT\", \"\");   \/\/define port<br>define(\"USE_PROXY\", false); \/\/set this true if you want to use proxy.<\/span><\/pre>\n<p>Now that we have told our PHP script<br \/>\nwhere to look for the proxy server we need to tell the HTTP POST to<br \/>\nsubmit via the proxy server to the reCAPTCHA server. Add the code below to the recaptchalib.php file.&nbsp; <\/p>\n<\/p>\n<pre><span>\/**<br> * Submits an HTTP POST to a reCAPTCHA server<br> * @param string $host<br> * @param string $path<br> * @param array $data<br> * @param int port<br> * @return array response<br> *\/<br>function _recaptcha_http_post($host, $path, $data, $port = 80) {<br><br>        if(USE_PROXY) {<br>                        $req = _recaptcha_qsencode ($data);<br>        $http_request  = \"POST http:\/\/\" . $host . $path . \" HTTP\/1.0rn\";<br>        $http_request .= \"Host: $hostrn\";<br>        $http_request .= \"Content-Type: application\/x-www-form-urlencoded;rn\";<br>        $http_request .= \"Content-Length: \" . strlen($req) . \"rn\";<br>        $http_request .= \"User-Agent: reCAPTCHA\/PHPrn\";<br>        $http_request .= \"rn\";<br>        $http_request .= $req;<br><br>        $response = '';<br><br>        if( false == ( $fs = @fsockopen(PROXY_HOST, PROXY_PORT, $errno, $errstr, 10) ) ) {<br>                        echo $errno . $errstr;<br>                die ('Could not open socket to proxy');<br>        }<br>                }<br>        else {<br><br>        $req = _recaptcha_qsencode ($data);<br><br>        $http_request  = \"POST $path HTTP\/1.0rn\";<br>        $http_request .= \"Host: $hostrn\";<br>        $http_request .= \"Content-Type: application\/x-www-form-urlencoded;rn\";<br>        $http_request .= \"Content-Length: \" . strlen($req) . \"rn\";<br>        $http_request .= \"User-Agent: reCAPTCHA\/PHPrn\";<br>        $http_request .= \"rn\";<br>        $http_request .= $req;<br><br>        $response = '';<br>        if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {<br>                die ('Could not open socket');<br>        }<br><br><br>        }<br><br><br>        fwrite($fs, $http_request);<br><br>        while ( !feof($fs) )<br>                $response .= fgets($fs, 1160); \/\/ One TCP-IP packet<br>        fclose($fs);<br>        $response = explode(\"rnrn\", $response, 3);<br>                \/\/print_r($response);<br>        return $response;<br>}<\/span><\/pre>\n<p>&nbsp;<\/p>\n<p><span>&nbsp;<\/span><\/p>\n<p>The reCaptcha service should now send HTTP POST requests via your proxy server.&nbsp; <\/p>\n<p>&nbsp;<\/p>\n<p><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Google reCaptcha service via caching or proxy servers - UCT HPC<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google reCaptcha service via caching or proxy servers - UCT HPC\" \/>\n<meta property=\"og:description\" content=\"Googles Recaptcha service is great to get rid of those web bots which enter false information into web forms. Its great for the elimination of SPAM. In most organizations the use of proxy servers or caching servers are used for either caching content because of a saturated internet link or for authentication and moderation. The &ldquo;recaptcha&rdquo; library unfortunately doesn&#039;t cater for the use of the proxy servers and therefore we needed to update the library with a bit of PHP proxy information. The error message was &ldquo; Could not open socket &ldquo;. This means that it had a problem connecting to port 80. This can be one of two reasons, either a host based firewall has blocked port 80 or you have a caching server in place running on the standard proxy ports, 3128 or 8080.     Locate the PHP library file &ldquo; recaptchalib.php &ldquo; and update the &ldquo;The reCAPTCHA server URL&#039;s&ldquo; section with the information below. Set the proxy from false to true and enter the proxy server information.&nbsp;        define(&quot;PROXY_HOST&quot;, &quot;&quot;);  \/\/define proxydefine(&quot;PROXY_PORT&quot;, &quot;&quot;);  \/\/define portdefine(&quot;USE_PROXY&quot;, false); \/\/set this true if you want to use proxy.        Now that we have told our PHP script where to look for the proxy server we need to tell the HTTP POST to submit via the proxy server to the reCAPTCHA server. Add the code below to the recaptchalib.php file.&nbsp;          \/** * Submits an HTTP POST to a reCAPTCHA server * @param string $host * @param string $path * @param array $data * @param int port * @return array response *\/function _recaptcha_http_post($host, $path, $data, $port = 80) {    if(USE_PROXY) {            $req = _recaptcha_qsencode ($data);    $http_request = &quot;POST http:\/\/&quot; . $host . $path . &quot; HTTP\/1.0rn&quot;;    $http_request .= &quot;Host: $hostrn&quot;;    $http_request .= &quot;Content-Type: application\/x-www-form-urlencoded;rn&quot;;    $http_request .= &quot;Content-Length: &quot; . strlen($req) . &quot;rn&quot;;    $http_request .= &quot;User-Agent: reCAPTCHA\/PHPrn&quot;;    $http_request .= &quot;rn&quot;;    $http_request .= $req;    $response = &#039;&#039;;    if( false == ( $fs = @fsockopen(PROXY_HOST, PROXY_PORT, $errno, $errstr, 10) ) ) {            echo $errno . $errstr;        die (&#039;Could not open socket to proxy&#039;);    }        }    else {    $req = _recaptcha_qsencode ($data);    $http_request = &quot;POST $path HTTP\/1.0rn&quot;;    $http_request .= &quot;Host: $hostrn&quot;;    $http_request .= &quot;Content-Type: application\/x-www-form-urlencoded;rn&quot;;    $http_request .= &quot;Content-Length: &quot; . strlen($req) . &quot;rn&quot;;    $http_request .= &quot;User-Agent: reCAPTCHA\/PHPrn&quot;;    $http_request .= &quot;rn&quot;;    $http_request .= $req;    $response = &#039;&#039;;    if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {        die (&#039;Could not open socket&#039;);    }    }    fwrite($fs, $http_request);    while ( !feof($fs) )        $response .= fgets($fs, 1160); \/\/ One TCP-IP packet    fclose($fs);    $response = explode(&quot;rnrn&quot;, $response, 3);        \/\/print_r($response);    return $response;}&nbsp;&nbsp;The reCaptcha service should now send HTTP POST requests via your proxy server.&nbsp; &nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\" \/>\n<meta property=\"og:site_name\" content=\"UCT HPC\" \/>\n<meta property=\"article:published_time\" content=\"2011-11-16T08:54:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-14T11:18:01+00:00\" \/>\n<meta name=\"author\" content=\"Timothy Carr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Timothy Carr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\"},\"author\":{\"name\":\"Timothy Carr\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0\"},\"headline\":\"Google reCaptcha service via caching or proxy servers\",\"datePublished\":\"2011-11-16T08:54:11+00:00\",\"dateModified\":\"2015-08-14T11:18:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\"},\"wordCount\":225,\"publisher\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\"},\"articleSection\":[\"programming\"],\"inLanguage\":\"en-ZA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\",\"name\":\"Google reCaptcha service via caching or proxy servers - UCT HPC\",\"isPartOf\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#website\"},\"datePublished\":\"2011-11-16T08:54:11+00:00\",\"dateModified\":\"2015-08-14T11:18:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/#breadcrumb\"},\"inLanguage\":\"en-ZA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ucthpc.uct.ac.za\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google reCaptcha service via caching or proxy servers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#website\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/\",\"name\":\"UCT HPC\",\"description\":\"University of Cape Town High Performance Computing\",\"publisher\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ucthpc.uct.ac.za\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-ZA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\",\"name\":\"University of Cape Town High Performance Computing\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-ZA\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png\",\"contentUrl\":\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png\",\"width\":450,\"height\":423,\"caption\":\"University of Cape Town High Performance Computing\"},\"image\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0\",\"name\":\"Timothy Carr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-ZA\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g\",\"caption\":\"Timothy Carr\"},\"sameAs\":[\"http:\/\/ucthpc.uct.ac.za\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google reCaptcha service via caching or proxy servers - UCT HPC","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/","og_locale":"en_US","og_type":"article","og_title":"Google reCaptcha service via caching or proxy servers - UCT HPC","og_description":"Googles Recaptcha service is great to get rid of those web bots which enter false information into web forms. Its great for the elimination of SPAM. In most organizations the use of proxy servers or caching servers are used for either caching content because of a saturated internet link or for authentication and moderation. The &ldquo;recaptcha&rdquo; library unfortunately doesn't cater for the use of the proxy servers and therefore we needed to update the library with a bit of PHP proxy information. The error message was &ldquo; Could not open socket &ldquo;. This means that it had a problem connecting to port 80. This can be one of two reasons, either a host based firewall has blocked port 80 or you have a caching server in place running on the standard proxy ports, 3128 or 8080.     Locate the PHP library file &ldquo; recaptchalib.php &ldquo; and update the &ldquo;The reCAPTCHA server URL's&ldquo; section with the information below. Set the proxy from false to true and enter the proxy server information.&nbsp;        define(\"PROXY_HOST\", \"\");  \/\/define proxydefine(\"PROXY_PORT\", \"\");  \/\/define portdefine(\"USE_PROXY\", false); \/\/set this true if you want to use proxy.        Now that we have told our PHP script where to look for the proxy server we need to tell the HTTP POST to submit via the proxy server to the reCAPTCHA server. Add the code below to the recaptchalib.php file.&nbsp;          \/** * Submits an HTTP POST to a reCAPTCHA server * @param string $host * @param string $path * @param array $data * @param int port * @return array response *\/function _recaptcha_http_post($host, $path, $data, $port = 80) {    if(USE_PROXY) {            $req = _recaptcha_qsencode ($data);    $http_request = \"POST http:\/\/\" . $host . $path . \" HTTP\/1.0rn\";    $http_request .= \"Host: $hostrn\";    $http_request .= \"Content-Type: application\/x-www-form-urlencoded;rn\";    $http_request .= \"Content-Length: \" . strlen($req) . \"rn\";    $http_request .= \"User-Agent: reCAPTCHA\/PHPrn\";    $http_request .= \"rn\";    $http_request .= $req;    $response = '';    if( false == ( $fs = @fsockopen(PROXY_HOST, PROXY_PORT, $errno, $errstr, 10) ) ) {            echo $errno . $errstr;        die ('Could not open socket to proxy');    }        }    else {    $req = _recaptcha_qsencode ($data);    $http_request = \"POST $path HTTP\/1.0rn\";    $http_request .= \"Host: $hostrn\";    $http_request .= \"Content-Type: application\/x-www-form-urlencoded;rn\";    $http_request .= \"Content-Length: \" . strlen($req) . \"rn\";    $http_request .= \"User-Agent: reCAPTCHA\/PHPrn\";    $http_request .= \"rn\";    $http_request .= $req;    $response = '';    if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {        die ('Could not open socket');    }    }    fwrite($fs, $http_request);    while ( !feof($fs) )        $response .= fgets($fs, 1160); \/\/ One TCP-IP packet    fclose($fs);    $response = explode(\"rnrn\", $response, 3);        \/\/print_r($response);    return $response;}&nbsp;&nbsp;The reCaptcha service should now send HTTP POST requests via your proxy server.&nbsp; &nbsp;","og_url":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/","og_site_name":"UCT HPC","article_published_time":"2011-11-16T08:54:11+00:00","article_modified_time":"2015-08-14T11:18:01+00:00","author":"Timothy Carr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Timothy Carr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/#article","isPartOf":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/"},"author":{"name":"Timothy Carr","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0"},"headline":"Google reCaptcha service via caching or proxy servers","datePublished":"2011-11-16T08:54:11+00:00","dateModified":"2015-08-14T11:18:01+00:00","mainEntityOfPage":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/"},"wordCount":225,"publisher":{"@id":"https:\/\/ucthpc.uct.ac.za\/#organization"},"articleSection":["programming"],"inLanguage":"en-ZA"},{"@type":"WebPage","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/","url":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/","name":"Google reCaptcha service via caching or proxy servers - UCT HPC","isPartOf":{"@id":"https:\/\/ucthpc.uct.ac.za\/#website"},"datePublished":"2011-11-16T08:54:11+00:00","dateModified":"2015-08-14T11:18:01+00:00","breadcrumb":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/#breadcrumb"},"inLanguage":"en-ZA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/11\/16\/google-recaptcha-service-via-caching-or-proxy-servers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ucthpc.uct.ac.za\/"},{"@type":"ListItem","position":2,"name":"Google reCaptcha service via caching or proxy servers"}]},{"@type":"WebSite","@id":"https:\/\/ucthpc.uct.ac.za\/#website","url":"https:\/\/ucthpc.uct.ac.za\/","name":"UCT HPC","description":"University of Cape Town High Performance Computing","publisher":{"@id":"https:\/\/ucthpc.uct.ac.za\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ucthpc.uct.ac.za\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-ZA"},{"@type":"Organization","@id":"https:\/\/ucthpc.uct.ac.za\/#organization","name":"University of Cape Town High Performance Computing","url":"https:\/\/ucthpc.uct.ac.za\/","logo":{"@type":"ImageObject","inLanguage":"en-ZA","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/","url":"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png","contentUrl":"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png","width":450,"height":423,"caption":"University of Cape Town High Performance Computing"},"image":{"@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0","name":"Timothy Carr","image":{"@type":"ImageObject","inLanguage":"en-ZA","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g","caption":"Timothy Carr"},"sameAs":["http:\/\/ucthpc.uct.ac.za"]}]}},"_links":{"self":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts\/1011"}],"collection":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/comments?post=1011"}],"version-history":[{"count":2,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts\/1011\/revisions"}],"predecessor-version":[{"id":2193,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts\/1011\/revisions\/2193"}],"wp:attachment":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/media?parent=1011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/categories?post=1011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/tags?post=1011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}