PHP如果是使用curl函数来抓取,主要设置下面几项即可。
curl_setopt($ch, CURLOPT_PROXY, ‘proxy.phpnote.cc’); //代理服务器地址
curl_setopt($ch, CURLOPT_PROXYPORT, ‘8000’); //代理服务器端口
如果是抓取HTTPS,把下面两项设置为false:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //抓HTTPS可以把此项设置为false
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //抓HTTPS可以把此项设置为false
完整示例代码如下,下面提供两种方式来调用:
//方式一:利用PHP的CURL函数库通过Proxy进行请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function curl_via_proxy($url) { $user_agent = 'curl'; $ch = curl_init($url); //创建CURL对象 curl_setopt($ch, CURLOPT_HEADER, 0); //返回头部 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回信息 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); //连接超时时间 curl_setopt($ch, CURLOPT_TIMEOUT, 5); //读取超时时间 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_PROXY, 'proxy.phpnote.cc'); //代理服务器地址 curl_setopt($ch, CURLOPT_PROXYPORT, '8000'); //代理服务器端口 curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); $res = curl_exec($ch); $curl_errno = curl_errno($ch); if ($curl_errno) { curl_close($ch); return false; } curl_close($ch); return $res; } |
//方式二:利用PHP调用Linux的curl命令来进行抓取,Windows下下载curl.exe即可。
1 2 |
$html = shell_exec("curl -x 'proxy.baibianip.com:8000' 'http://www.baidu.com' --connect-timeout 3 -m 5"); echo $html; |
Linux下curl命令接入
1 2 |
//如果使用curl命令,可以直接类似下面的方式调用即可: curl -x 'proxy.baibianip.com:8000' 'http://www.baidu.com' --connect-timeout 3 -m 5 |
Python
如果在Python中使用urlopen,则可以仿照下面的方式使用即可。
1 2 3 4 5 |
#coding:utf-8 from urllib.request import urlopen proxies = {'http': 'http://proxy.baibianip.com:8000'} handle = urllib.urlopen('http://www.baidu.com', proxies=proxies) print(handle.read().decode('utf-8')) |
转载请注明:PHP笔记 » php中curl使用代理ip的例子