通过代理获取 file_get_contents

发布于 2024-12-11 07:30:29 字数 552 浏览 0 评论 0原文

我想使用 file_get_contents 和代理从互联网上读取一些页面/站点。 我想出了以下代码:

$opts = array('http' => array('proxy' => '14.199.56.205:8909', 'request_fulluri'=>;正确));

$context = stream_context_create($opts);

$test = file_get_contents('http://www.google.com', false, $context);

回显$test;

我从位于此处的列表中获取代理 http://www.hidemyass.com/proxy-list/

我测试了代理,它可以在浏览器中工作,但使用 file_get_contents 我只收到空白页面。

哪里有错误? :)

I want to read some pages/sites from the Internet by using file_get_contents and proxy.
I came up with the following code:

$opts = array('http' => array('proxy' => '14.199.56.205:8909',
'request_fulluri' => true));

$context = stream_context_create($opts);

$test = file_get_contents('http://www.google.com', false, $context);

echo $test;

I took proxy from list located here http://www.hidemyass.com/proxy-list/

I tested proxy and it is working from browser, but with file_get_contents i just receive blank page.

Where is mistake? :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ゝ杯具 2024-12-18 07:30:29

免费代理时好时坏,并且经常因为这样或那样的原因而失败。这是我使用的一个函数,它将随机尝试从代理数组中查找 HTTP 200 的 2 个代理。作为最后的手段,它使用 anonymouse.org 来获取文件。

function proxy($url) {

    $proxies = array(); 
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';

    $http=0;
    $try=0;
    while (true) {
        $proxy = $proxies[array_rand($proxies)];
        if (!function_exists('curl_init')) { die('Sorry cURL is not installed!'); }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, "http://www.yomamma.com/");
        curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_PROXY, $proxy);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $output = curl_exec($ch);
        $http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        if ($http==200) { break; }
        $try++;
        if($try>2) { break; }
    }

    if ($http!=200) {
        $output=file_get_contents("http://anonymouse.org/cgi-bin/anon-www.cgi/$url");
    } 

    return $output;

}

Free proxies are hit or miss and regularly fail for one reason or another. Here is a function I use that will randomly try 2 proxies from an array of proxies looking for HTTP 200. As a last resort it uses anonymouse.org to get the file.

function proxy($url) {

    $proxies = array(); 
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';
    $proxies[] = '1.1.1.1:80';

    $http=0;
    $try=0;
    while (true) {
        $proxy = $proxies[array_rand($proxies)];
        if (!function_exists('curl_init')) { die('Sorry cURL is not installed!'); }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, "http://www.yomamma.com/");
        curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_PROXY, $proxy);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $output = curl_exec($ch);
        $http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        if ($http==200) { break; }
        $try++;
        if($try>2) { break; }
    }

    if ($http!=200) {
        $output=file_get_contents("http://anonymouse.org/cgi-bin/anon-www.cgi/$url");
    } 

    return $output;

}
风月客 2024-12-18 07:30:29

现在大多数网站都使用 HTTPS。因此,在您的 $opts 变量中,您应该使用“HTTPS”而不是“HTTP”。

Nowadays most sites use HTTPS. Therefore, in your $opts variable you should use 'HTTPS' and not 'HTTP'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文