curl和file_get_contents都可以在PHP下面获取网页的内容
然而curl会缓存DNS记录,因此性能比file_get_contents函数性能更好
推荐使用curl获取网页内容
下面是利用curl重写的函数,具备file_get_contents相同的功能
function curl_file_get_contents($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址 //curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息 curl_setopt($ch, CURLOPT_TIMEOUT, 10); //设置超时 curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); //用户访问代理 User-Agent curl_setopt($ch, CURLOPT_REFERER,_REFERER_); //设置 referer curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //https请求不验证证书 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //https请求不验证hosts $r = curl_exec($ch); curl_close($ch); return $r; }
附带记录个人需要的API
$image_url = "your image url" ; $api_key = " your api key" ; $newimgurl = "https://www.moderatecontent.com/api/v2?key=" . $api_key . "&url=". $image_url ; $apicontent = json_decode( curl_file_get_contents($newimgurl) ) ; $apiletter = $apicontent->rating_letter ;
20221107附带crul doh:
PHP8.1支持 CURLOPT_DOH_URL 选项
if (defined('CURLOPT_DOH_URL')) { curl_setopt($curl, CURLOPT_DOH_URL, 'https://cloudflare-dns.com/dns-query'); }
自用需要JSON转IP
先通过curl获取IP
https://dns.google/resolve?name=example.com&type=a
获取数据后,jsondecode 输出IP
$ip=$re->Answer[0]->data
最后二次curl获取其他URL数据时指定IP
curl_setopt($ch, CURLOPT_RESOLVE, array($domain.':443:'.$ip));
curl_setopt($ch, CURLOPT_RESOLVE, array('example.com:443:93.184.216.34'));
由于网上都是相互转载的,本人无法确认出处,就不写来源了
Client URL Library :
http://www.php.net/manual/en/book.curl.php
file_get_contents:
http://php.net/manual/en/function.file-get-contents.php
此处评论已关闭