{"id":134,"date":"2014-05-03T18:22:39","date_gmt":"2014-05-03T16:22:39","guid":{"rendered":"http:\/\/www.domorizon.eu\/blog\/?p=134"},"modified":"2014-08-06T23:41:55","modified_gmt":"2014-08-06T21:41:55","slug":"proxy-sans-acces-a-un-proxy","status":"publish","type":"post","link":"https:\/\/www.domorizon.eu\/blog\/proxy-sans-acces-a-un-proxy\/","title":{"rendered":"Proxy sans acc\u00e8s \u00e0 un proxy"},"content":{"rendered":"<p>Il n&rsquo;est pas toujours facile d&rsquo;avoir acc\u00e8s \u00e0 \u00ab\u00a0tout\u00a0\u00bb internet depuis l&rsquo;intranet d&rsquo;une soci\u00e9t\u00e9&#8230;<\/p>\n<p>J&rsquo;ai eu la chance d&rsquo;avoir dans diff\u00e9rentes soci\u00e9t\u00e9s ou j&rsquo;ai travaill\u00e9 et ou l&rsquo;acc\u00e8s \u00e0 Internet qui m&rsquo;\u00e9tais offert, d&rsquo;avoir un acc\u00e8s total, sans limitations&#8230; mais cela est bien rare: les administrateurs limitent pour diverses raisons l&rsquo;acc\u00e8s aux sites, le plus souvent tous les sites de streaming sont limit\u00e9s ou carr\u00e9ment \u00ab\u00a0interdit\u00a0\u00bb !<\/p>\n<p>Une astuce est alors de passer par un proxy ou pour \u00eatre plus exacte, un site qui ira chercher les pages auxquelles vous n&rsquo;avez pas acc\u00e8s, mais site auquel vous avez toutefois acc\u00e8s !<\/p>\n<p>Sur mon dernier travail, j&rsquo;avais acc\u00e8s aux pages qui \u00e9taient sur mon domaine dyndns.org et qui pointaient sur mon NAS &#8211; c&rsquo;est lui qui h\u00e9berge les pages WEB de quelques un de mes sites.<\/p>\n<p>Solution: installer un script qui permet de charger les pages d&rsquo;une URL puis de les afficher dans une frame HTML.<\/p>\n<p>&nbsp;<\/p>\n<p>Initialement, alors que je cherchais une fonction PHP pour un projet, je suis tomb\u00e9 sur une de ces fonctions PHP (\u00ab\u00a0curl\u00a0\u00bb) qui permettent de r\u00e9cup\u00e9rer un stream HTML. Apr\u00e8s avoir cod\u00e9 quelques lignes, je me suis apper\u00e7u que certains avaient d\u00e9ja mieux travaill\u00e9s que moi:<\/p>\n<pre class=\"lang:php decode:true\">\/\/ PHP Proxy\r\n\/\/ Responds to both HTTP GET and POST requests\r\n\/\/\r\n\/\/ Author: Abdul Qabiz\r\n\/\/ March 31st, 2006\r\n\/\/\r\n\r\n\/\/ Get the url of to be proxied\r\n\/\/ Is it a POST or a GET?\r\n$url = ($_POST['url']) ? $_POST['url'] : $_GET['url'];\r\n$headers = ($_POST['headers']) ? $_POST['headers'] : $_GET['headers'];\r\n$mimeType =($_POST['mimeType']) ? $_POST['mimeType'] : $_GET['mimeType'];\r\n\r\n\r\n\/\/Start the Curl session\r\n$session = curl_init($url);\r\n\r\n\/\/ If it's a POST, put the POST data in the body\r\nif ($_POST['url']) {\r\n\t$postvars = '';\r\n\twhile ($element = current($_POST)) {\r\n\t\t$postvars .= key($_POST).'='.$element.'&amp;amp;';\r\n\t\tnext($_POST);\r\n\t}\r\n\tcurl_setopt ($session, CURLOPT_POST, true);\r\n\tcurl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);\r\n}\r\n\r\n\/\/ Don't return HTTP headers. Do return the contents of the call\r\ncurl_setopt($session, CURLOPT_HEADER, ($headers == \"true\") ? true : false);\r\n\r\ncurl_setopt($session, CURLOPT_FOLLOWLOCATION, true); \r\n\/\/curl_setopt($ch, CURLOPT_TIMEOUT, 4); \r\ncurl_setopt($session, CURLOPT_RETURNTRANSFER, true);\r\n\r\n\/\/ Make the call\r\n$response = curl_exec($session);\r\n\r\nif ($mimeType != \"\")\r\n{\r\n\t\/\/ The web service returns XML. Set the Content-Type appropriately\r\n\theader(\"Content-Type: \".$mimeType);\r\n}\r\n\r\necho $response;\r\n\r\ncurl_close($session);\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>D&rsquo;autres sources :<\/p>\n<ul>\n<li><a href=\"http:\/\/www.abdulqabiz.com\/blog\/archives\/2007\/05\/31\/php-proxy-script-for-cross-domain-requests\/\" target=\"_blank\">http:\/\/www.abdulqabiz.com\/blog\/archives\/2007\/05\/31\/php-proxy-script-for-cross-domain-requests\/<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il n&rsquo;est pas toujours facile d&rsquo;avoir acc\u00e8s \u00e0 \u00ab\u00a0tout\u00a0\u00bb internet depuis l&rsquo;intranet d&rsquo;une soci\u00e9t\u00e9&#8230;<br \/> [&#8230;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[17,18,16],"tags":[27,28,31,30,29],"class_list":["post-134","post","type-post","status-publish","format-standard","hentry","category-developpement","category-php","category-synology","tag-php-2","tag-proxy","tag-server","tag-serveur","tag-url"],"_links":{"self":[{"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/posts\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/comments?post=134"}],"version-history":[{"count":5,"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions"}],"predecessor-version":[{"id":300,"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions\/300"}],"wp:attachment":[{"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/media?parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/categories?post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.domorizon.eu\/blog\/wp-json\/wp\/v2\/tags?post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}