浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!
发布时间:2020-05-25 03:26:38 所属栏目:PHP 来源:互联网
导读:由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号。有所收获。这里总结下个人经验。开讲前,先吐槽一下新浪云服务器,一个程序里的 同一个函数 在PC测试可以正常运行,在它那里就会挂的现象。老样子,我将在代码里注释清楚。使用下面的函数,
由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号。有所收获。这里总结下个人经验。 开讲前,先吐槽一下新浪云服务器,一个程序里的 在PC测试可以正常运行,在它那里就会挂的现象。 老样子,我将在代码里注释清楚。使用下面的函数,将会获得两种形式的 cookie,一种保存在文件中,一种直接以变量的形式返回, 经验提示: 有时候,在不同的代码运行环境中,带着文件cookie 去访问会成功,而变量却失败,有时候却想法。不过, 目前,这两种方法总有一种会成功。 <div class="cnblogs_code"> get_cookie(,, (==){ "get_cookie_url_null"; (==){ "get_params_null"; (==){ "get_referer-null"; = ("content-type: application/x-www-form-urlencoded; charset=UTF-8"); = curl_init(); curl_setopt(,CURLOPT_HTTPHEADER,); curl_setopt(,CURLOPT_HEADER,1); curl_setopt(,CURLOPT_RETURNTRANSFER,1); curl_setopt(,CURLOPT_FOLLOWLOCATION,1); curl_setopt(,CURLOPT_POST,1); curl_setopt(,CURLOPT_POSTFIELDS,); curl_setopt(,CURLOPT_COOKIEJAR,'cookie.txt'); cookies);//例如这句就是设置以变量的形式发送cookie,注意,这里的cookie变量是要先获取的,见下面获取方式 curl_setopt (,CURLOPT_REFERER,); =curl_exec(); (curl_errno( 'Curl error: '.curl_error();(); (== "get_content_null"; ('/Set-Cookie:(.*);/iU',,); = [1]; curl_close(); ; } 下面这个是如何利用上面的cookie 去访问网页,去post数据,去get页面代码的函数。 <div class="cnblogs_code"> post(,, = 0, = , = , = = ()?(): = ( 'Accept:*/*', 'Accept-Charset:text/html,application/xhtml+xml,application/xml;q=0.7,*;q=0.3', 'Accept-Encoding:gzip,deflate,sdch', 'Accept-Language:zh-CN,zh;q=0.8', 'Connection:keep-alive', 'Content-Type:application/x-www-form-urlencoded', ( = (,("Host:". (->option["host" = (,("Host:".->option["host" ( = (,("Origin:". = (,("Origin:". ( = (,("Referer:". = (,("Referer:". = curl_init(); curl_setopt(,CURLOPT_URL,); curl_setopt(, curl_setopt(,CURLOPT_SSL_VERIFYPEER,0); curl_setopt(,CURLOPT_SSL_VERIFYHOST,1); curl_setopt(,CURLOPT_USERAGENT,-> curl_setopt(, curl_setopt(,CURLOPT_AUTOREFERER,1); curl_setopt(,1); curl_setopt(,CURLOPT_ENCODING,"gzip" curl_setopt(,); cookies);//以变量形式发送cookie,我这里没用它,文件保险点 curl_setopt(,'cookie.txt'); curl_setopt(,'cookie.txt'); curl_setopt(,CURLOPT_TIMEOUT,30); curl_setopt(,1 curl_setopt(,1 = curl_exec( (curl_errno( 'Curl error: ' . curl_error ( ); curl_close( (,) = ("rnrn",,2); = ->auto_charest(); ("header"=>,"body"=>,"content"=> } 上面是post,下面是get,两者差不多,差别在于,get是没有post,传送数据给放前访问的网页的,仅仅只是获取源代码。 <div class="cnblogs_code"> get(, = 1, = randip(); (== "get-url-null"; = 'Accept:*/*', 'Accept-Charset:GBK,utf-8;q=0.7, ( = (,("Host:". (->option["host" = (,("Host:".->option["host" ( = (,("Origin:". = (,("Origin:". ( = (,("Referer:". = (,("Referer:". = curl_setopt(, curl_setopt(, curl_setopt(,0 curl_setopt(,1 curl_setopt(,-> curl_setopt(, curl_setopt(,1 curl_setopt(,1 curl_setopt(,"gzip" curl_setopt(,CURLOPT_HTTPGET,1 cookies); curl_setopt(,'cookie.txt' curl_setopt(,'cookie.txt' curl_setopt(,30 curl_setopt(,1 curl_setopt(,1 = curl_exec( (curl_errno( 'Curl error: '.curl_error (); curl_close( (,2 = ->auto_charest( ("header"=>,"content"=> } OK,如果觉得对你有点用的,请默默点一下顶。(右下角) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |