Home  >  Article  >  Backend Development  >  使用curl_setopt抓取百度,百度图片防盗有什么好的办法?该如何处理

使用curl_setopt抓取百度,百度图片防盗有什么好的办法?该如何处理

WBOY
WBOYOriginal
2016-06-13 12:20:141048browse

使用curl_setopt抓取百度,百度图片防盗有什么好的办法?

$url = "http://www.baidu.com/s?wd=csdn";<br />$header = array (<br />        'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36'<br />);<br />$ch = curl_init ();<br />$timeout = 10; <br />curl_setopt ( $ch, CURLOPT_URL, $url );<br />curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );<br />curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );<br />curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT,$timeout);<br /><br />$content = curl_exec ( $ch );<br />if ($content == FALSE) {<br />    echo "error:" . curl_error ( $ch );<br />}<br /><br />curl_close ( $ch );<br />echo $content;



------解决思路----------------------
伪造referer url

------解决思路----------------------
1楼已经说的很清楚了。
------解决思路----------------------
你要明白,图片展示的时候,不是php的curl请求了,而是浏览器发的请求。浏览器发的请求,你当前url是什么域名比如www.devtest.com,那么图片的refer就是什么。所以肯定看不到图片。

有一种做法就是,所有百度的图片,你替换成访问自己写的一个php比如url/image.php?baidu_url=******,*****就是真实的图片地址,然后你的image.php在调用curl并加上refer去抓取。
------解决思路----------------------
http://i7.baidu.com/it/u=1366412274,1504179524&fm=96&s=E840F41219BFE0C844FC8DCA0300F0B3
你是不能用代码直接访问到的(403错)
但你带上访问 http://www.baidu.com/s?wd=csdn 时得到的 cookie 就可以用代码访问到了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn