file_get_contents behind a proxy?
To use file_get_contents()
over/through a proxy that doesn't require authentication, something like this should do :
(I'm not able to test this one : my proxy requires an authentication)
$aContext = array(
'http' => array(
'proxy' => 'tcp://192.168.0.2:3128',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
Of course, replacing the IP and port of my proxy by those which are OK for yours ;-)
If you're getting that kind of error :
Warning: file_get_contents(http://www.google.com) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 407 Proxy Authentication Required
It means your proxy requires an authentication.
If the proxy requires an authentication, you'll have to add a couple of lines, like this :
$auth = base64_encode('LOGIN:PASSWORD');
$aContext = array(
'http' => array(
'proxy' => 'tcp://192.168.0.2:3128',
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth",
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
Same thing about IP and port, and, this time, also LOGIN and PASSWORD ;-) Check out all valid http options.
Now, you are passing an Proxy-Authorization header to the proxy, containing your login and password.
And... The page should be displayed ;-)
Using proxy with file_get_contents
test.php using http://ifconfig.me/ip
code modified from http://www.php.net/manual/en/function.file-get-contents.php
<?php
// Create a stream
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n",
'proxy' => 'tcp://221.176.14.72:80',
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('http://ifconfig.me/ip', false, $context);
var_dump($file);
file_get_contents with https requests via proxy
I would recommend cURL to do this. Somewhere on stackoverflow a user said this and I totally agree.
file_get_contents() is a simple screwdriver. Great for simple GET
requests where the header, HTTP request method, timeout, cookiejar,
redirects, and other important things do not matter. cURL with setopt
is a powerdrills with almost every option you can think of.
<?php
$url = 'https://www.google.com';
// to check your proxy
// $url = 'http://whatismyipaddress.com/';
$proxy = '50.115.194.97:8080';
// create curl resource
$ch = curl_init();
// set options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // read more about HTTPS http://stackoverflow.com/questions/31162706/how-to-scrape-a-ssl-or-https-url/31164409#31164409
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
echo $output;
?>
How to use file_get_contents() behind the proxy?
Are you behind a proxy? If so, you'll need to tell PHP about it using
stream_context_set_default or by passing a context created with stream_context_create as the third param to file_get_contents.
Related Topics
Php: Inserting Values from the Form into MySQL
Convert Flat Array to the Multi-Dimensional
Remove Exif Data from Jpg Using PHP
How to Send Emails via Cron Job Usng PHP MySQL
What Is the Most Efficient Way to Count All the Occurrences of a Specific Character in a PHP String
Access Denied for User 'Homestead'@'Localhost' (Using Password: Yes)
Correct Way to Set Bearer Token with Curl
Call to Undefined Function _() Error - PHPmyadmin
Force Browser to Download Image with JavaScript Window.Open
Check for Consecutive Dates Within a Set and Return as Range
Seamless Way to Check If User Likes Page
New Limit Within PHP: 1000 Fields Per Post. Does Someone Know, If the Number Can Be Influenced
Add Columns to Admin Orders List in Woocommerce
Get Youtube Video Id from HTML Code with PHP
What's the Best Way to Pass a PHP Variable to JavaScript
Stop Caching for PHP 5.5.3 in Mamp