0

我现在已经问过我的主人很多次了,这是否站在他们这边,他们说不。cURL 中的一切都在工作/启用;但是,每当我尝试以下代码时,我永远无法返回连接或页面(我已经测试了许多不同的工作代理)。

<?php

//THIS IS A TEST
$ch = curl_init('http://www.google.com');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1');
curl_setopt($ch, CURLOPT_PROXY, '114.80.136.112:7780');
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
curl_exec($ch);
echo curl_error($ch);
print_r(curl_getinfo($ch));
curl_close($ch);

?>

其他人可以为我测试这个功能,看看他们是否得到任何工作结果吗?

编辑:也尝试过

<?php

//THIS IS A TEST
$ch = curl_init('http://www.google.com');

$f = fopen('requests.txt', 'w');

curl_setopt_array($ch, array(
    CURLOPT_PROXY => '114.80.136.112:7780',
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    CURLOPT_TIMEOUT => 40,
    CURLOPT_VERBOSE        => 1,
    CURLOPT_STDERR         => $f,
));

curl_exec($ch);
fclose($f);
echo curl_error($ch);
print_r(curl_getinfo($ch));
curl_close($ch);

?>

在results.txt中返回了这个

* About to connect() to proxy 114.80.136.112 port 7780 (#0)
*   Trying 114.80.136.112...
* Timeout
* connect() timed out!
* Closing connection #0
4

2 回答 2

0

返回

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1373746017821152&amp;usg=AFQjCNG2MqAeEfu9C9h5dmJu1n0YZWm5vw">here</A>.
</BODY></HTML>
Array
(
    [url] => http://www.google.com
    [content_type] => text/html; charset=UTF-8
    [http_code] => 302
    [header_size] => 580
    [request_size] => 191
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.733
    [namelookup_time] => 0
    [connect_time] => 0.328
    [pretransfer_time] => 0.328
    [size_upload] => 0
    [size_download] => 376
    [speed_download] => 512
    [speed_upload] => 0
    [download_content_length] => 376
    [upload_content_length] => 0
    [starttransfer_time] => 0.733
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [redirect_url] => http://www.google.com.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=http://www.google.com.hk/&ust=1373746017821152&usg=AFQjCNG2MqAeEfu9C9h5dmJu1n0YZWm5vw
)

尝试检查卷曲phpinfo();

于 2013-07-13T20:07:40.140 回答
0

您可能还需要设置您的代理类型:

curl_setopt( $curl_handle, CURLOPT_PROXY, '127.0.0.1:9050' );
curl_setopt( $curl_handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5 );

此外,对于调试,提琴手是无价的。有了它,您可以制作 HTTP 请求(甚至是使用 HTTPS 的服务)来对远程服务进行故障排除。

您应该能够使用此方法生成由 curl 发送到您的代理的完整请求消息。

最后,尽管在这种情况下这可能对您没有帮助,但我用 PHP 编写了一个独立的 curl 包装类。向它添加方法或按原样使用会使使用 curl 更容易一些。

https://github.com/homer6/altumo/blob/master/source/php/Http/OutgoingHttpRequest.md

https://github.com/homer6/altumo/blob/master/source/php/Http/OutgoingHttpRequest.php

于 2013-07-13T20:22:19.103 回答