• 关于 curl url 的搜索结果

回答

先来看登录部分的代码: //模拟登录 function login_post($url, $cookie, $post) { $curl = curl_init();//初始化curl模块 curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 curl_exec($curl);//执行cURL curl_close($curl);//关闭cURL资源,并且释放系统资源 } 函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址,保存的cookie文件,post的数据(用户名和密码等信息),是否返回信息等等,然后curl_exec执行curl,最后curl_close()释放资源。注意PHP自带的http_build_query()可以将数组转换成相连接的字符串。接下来如果登录成功后,我们要获取登录成功后的页面信息。 //登录成功后获取数据 function get_content($url, $cookie) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie $rs = curl_exec($ch); //执行cURL抓取页面内容 curl_close($ch); return $rs; } 函数get_content()中也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中我们设置CURLOPT_RETURNTRANSFER为1即自动返回信息,而CURLOPT_COOKIEFILE可以读取到登录时保存的cookie信息,最后将页面内容返回。我们的最终目的是要获取到模拟登录后的信息,也就是只有正常登录成功后才能获取的有用信息。接下来我们以登录开源中国的移动版为例,看看如何抓取到登录成功后的信息。 //设置post的数据 $post = array ( 'email' => 'oschina账户', 'pwd' => 'oschina密码', 'goto_page' => '/my', 'error_page' => '/login', 'save_login' => '1', 'submit' => '现在登录' ); //登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录 login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件 @ unlink($cookie); //匹配页面信息 $preg = "/<td class='portrait'>(.*)<\/td>/i"; preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str; 使用总结1、初始化curl;2、使用curl_setopt设置目标url,和其他选项;3、curl_exec,执行curl;4、执行后,关闭curl;5、输出数据。

小旋风柴进 2019-12-02 02:00:54 0 浏览量 回答数 0

回答

拿去用,不谢 if (! is_writable(__DIR__)) { exit('目录不可写,exit'); } $cookie_file = 'cookies.txt'; $username = 'ty0716'; $password = 'test12345'; $post = array( 'username' => $username, 'password' => $password, 'expire' => '', 'url' => '', 'time' => time(), 'act' => 'do_login' ); // username=ty0716&password=qaz&expire=&url=&time=1456104638534&act=do_login $login_url = 'http://www.lazpw.cn/plus/ajax_user.php'; $login = post($login_url, http_build_query($post), $cookie_file); if ($login == 'err') { exit('用户名或密码错误'); } $login_log_page = get('http://www.lazpw.cn/user/personal/personal_user.php?act=login_log', $cookie_file); echo iconv("UTF-8", "GB2312//IGNORE", $login_log_page); unlink($cookie_file); function post($url, $data, $cookie_file) { // 初始化 $curl = curl_init($url); // 不输出header头信息 curl_setopt($curl, CURLOPT_HEADER, 0); // 保存到字符串而不是输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($curl, CURLOPT_POST, 1); // 请求数据 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // 是否抓取跳转后的页面 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $req = curl_exec($curl); curl_close($curl); return $req; } function get($url, $cookie_file) { // 初始化 $curl = curl_init($url); // 不输出header头信息 curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file); // 保存到字符串而不是输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 是否抓取跳转后的页面 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $req = curl_exec($curl); curl_close($curl); return $req; }

杨冬芳 2019-12-02 02:55:26 0 浏览量 回答数 0

问题

PHP,Curl设置Content-type不成功,求大神帮忙解答,谢谢! 400 请求报错 

kun坤 2020-06-01 10:04:02 0 浏览量 回答数 1

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

回答

你试一下下面的代码$url = ''; //POST地址 $password = ''; //密码 $curl = curl_init($url); curl_setopt($curl, CURLOPT_POSTFIELDS, 'username='.$_COOKIE['username'].'&password='.$password); /** * 如果$url是https则需要取消下面两行注释 * curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); * curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); */ curl_exec($curl); curl_close($curl);

落地花开啦 2019-12-02 02:53:11 0 浏览量 回答数 0

回答

示例代码:/* @purpose: 使用curl并行处理url @return: array 每个url获取的数据 @param: $urls array url列表 @param: $callback string 需要进行内容处理的回调函数。示例:func(array)*/ function curl($urls = array(), $callback = ''){ $response = array(); if (empty($urls)) { return $response; } $chs = curl_multi_init(); $map = array(); foreach($urls as $url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_NOSIGNAL, true); curl_multi_add_handle($chs, $ch); $map[strval($ch)] = $url; } do{ if (($status = curl_multi_exec($chs, $active)) != CURLM_CALL_MULTI_PERFORM) { if ($status != CURLM_OK) { break; } //如果没有准备就绪,就再次调用curl_multi_exec while ($done = curl_multi_info_read($chs)) { $info = curl_getinfo($done["handle"]); $error = curl_error($done["handle"]); $result = curl_multi_getcontent($done["handle"]); $url = $map[strval($done["handle"])]; $rtn = compact('info', 'error', 'result', 'url'); if (trim($callback)) { $callback($rtn); } $response[$url] = $rtn; curl_multi_remove_handle($chs, $done['handle']); curl_close($done['handle']); //如果仍然有未处理完毕的句柄,那么就select if ($active > 0) { curl_multi_select($chs, 0.5); //此处会导致阻塞大概0.5秒。 } } } } while($active > 0); //还有句柄处理还在进行中 curl_multi_close($chs); return $response; } //使用方法function deal($data){ if ($data["error"] == '') { echo $data["url"]." -- ".$data["info"]["http_code"]."\n"; } else { echo $data["url"]." -- ".$data["error"]."\n"; } }$urls = array();for ($i = 0; $i < 10; $i++) { $urls[] = 'http://www.baidu.com/s?wd=etao_'.$i; $urls[] = 'http://www.so.com/s?q=etao_'.$i; $urls[] = 'http://www.soso.com/q?w=etao_'.$i; }curl($urls, "deal"); 参考资料 php实现并发处理之curl篇

exinnet 2019-12-02 01:32:22 0 浏览量 回答数 0

回答

$url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $ret = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);

小旋风柴进 2019-12-02 02:01:17 0 浏览量 回答数 0

问题

ossfs挂载出现timeout错误,救命啊

lxsilver 2019-12-01 20:54:59 2223 浏览量 回答数 2

问题

使用PHP CURL函数采集gzip编码网页报错?报错

爱吃鱼的程序员 2020-06-22 17:38:13 0 浏览量 回答数 1

问题

php的curl函数模拟登陆获取cookie,然后能用获取到的cookie保持登录状态吗,报错

一枚小鲜肉帅哥 2020-06-20 19:37:22 0 浏览量 回答数 1

回答

Re如何开启filegetcontents 转的: file_get_contents函数的使用示例: < ?php $file_contents = file_get_contents('http://www.ccvita.com/'); echo $file_contents; ?> 换成curl函数的使用示例: < ?php $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, 'http://www.ccvita.com'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); echo $file_contents; ?> 利用function_exists函数来判断php是否支持一个函数可以轻松写出下面函数 < ?php function vita_get_url_content($url) { if(function_exists('file_get_contents')) { $file_contents = file_get_contents($url); } else { $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); } return $file_contents; } ?> 其实上面的这个函数还有待商榷,如果你的主机服务商把file_get_contents和curl都关闭了,上面的函数就会出现错误。

shanw 2019-12-02 02:05:25 0 浏览量 回答数 0

问题

php模拟登录目标网站,为何302没有跟随跳转.cookie已经获得.?

小旋风柴进 2019-12-01 20:09:50 1180 浏览量 回答数 1

回答

[php] view plain copy print?在CODE上查看代码片派生到我的代码片 <?php $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, 'http://www.domain.com/'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_POST, 1 );//设置post请求 curl_setopt($ch, CURLOPT_HEADER, 0 ) ; curl_setopt($ch,CURLOPT_POSTFIELDS, "param=".$param);//param为请求的参数 $file_contents = curl_exec($ch); curl_close($ch); echo $file_contents; ?> /** * * @Description 批量请求获得内容 * @param @param array $urls * @param @param String $param * @return String */ public function remoteByRolling($urls, $param) { if (! is_array ( $urls ) || count ( $urls ) == 0) return false; $queue = curl_multi_init (); $map = array (); foreach ( $urls as $url ) { $this->remoteByPost ( $url, $param ); curl_multi_add_handle ( $queue, $this->ch ); $map [$url] = $this->$ch; } $active = null; // 执行批处理句柄 do { $mrc = curl_multi_exec ( $queue, $active ); } while ( $mrc == CURLM_CALL_MULTI_PERFORM ); while ( $active > 0 && $mrc == CURLM_OK ) { //curl_multi_select:等待所有cURL批处理中的活动连接 if (curl_multi_select ( $queue, 0.5 ) != - 1) { do { $mrc = curl_multi_exec ( $queue, $active ); } while ( $mrc == CURLM_CALL_MULTI_PERFORM ); } } /* get data */ $responses = array (); foreach ( $map as $url => $ch ) { if (curl_error ( $ch ) == '') { $responses [$url] = curl_multi_getcontent ( $ch ) ; }else{ error_log("curl error"); } curl_multi_remove_handle ( $queue, $ch ); curl_close ( $ch ); } }

小旋风柴进 2019-12-02 02:03:12 0 浏览量 回答数 0

问题

上传媒体文件加了‘’直接为null,不加返会不和法参数

yemxing 2019-12-01 21:30:38 1984 浏览量 回答数 1

问题

curl提示“Failed writing header”,什么意思?

落地花开啦 2019-12-01 19:58:04 1467 浏览量 回答数 1

问题

php使用Curl调用接口 速度非常慢, 把 域名换成Ip速度就正常啦.

a123456678 2019-12-01 20:12:32 1469 浏览量 回答数 1

问题

php curl post请求中携带header参数? 400 报错

爱吃鱼的程序员 2020-06-05 13:04:05 0 浏览量 回答数 1

问题

用PHP访问云oss图片服务器时,提示找不到这个常量。常量要定义成什么?

wy_szrjk 2019-12-01 21:03:49 5019 浏览量 回答数 2

问题

弹性WEB托管关于PHP CURL的使用问题?

小小家3322 2019-12-01 19:40:30 2436 浏览量 回答数 2

问题

钉钉上传图片报错:40035 不合法的参数

什么情况? 2019-12-01 21:33:47 3734 浏览量 回答数 3

问题

请教各位关于php中get方式传递字符串的最大长度的问题

落地花开啦 2019-12-01 19:53:43 1530 浏览量 回答数 1

问题

使用php curl获得网页内容,相同的代码本地上可以,服务器上不行???

青梅煮酒_g 2019-12-01 20:21:45 2116 浏览量 回答数 2

问题

使用libcurl为什么无法获取到数据?

a123456678 2019-12-01 19:46:08 960 浏览量 回答数 1

问题

curl(3)使用错误/非法格式或缺少URL的URL

k8s小能手 2019-12-01 19:30:58 760 浏览量 回答数 1

回答

是指针的问题, 如果你想在函数中改变指针的值需要在传入指向指针的指针. 帮你改了下. 有点强迫症, 顺便改了改了你的code style. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> size_t memory_callback(void *data, size_t size, size_t nmemb, void *content) { size_t realsize = size * nmemb; char *p = *(char **)content; size_t len = p ? strlen(p) : 0; *(char **)content = realloc(p, len + realsize + 1); p = *(char **)content; if (NULL == p) { fprintf(stderr,"not enouth memory"); return -1; } memcpy(p + len, data, realsize); p[len + realsize] = '\0'; return realsize; } size_t get_content(char *url, char **content) { CURL *curl_handle; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl_handle = curl_easy_init(); curl_easy_setopt(curl_handle, CURLOPT_URL, url); curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)"); curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 0L); curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L); curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, memory_callback); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)content); res = curl_easy_perform(curl_handle); curl_easy_cleanup(curl_handle); curl_global_cleanup(); return res; } int main(int argc, char *argv[]) { char *content = NULL; get_content("http://www.baidu.com", &content); printf("%s\n", content); if (content) free(content); return 0; }

a123456678 2019-12-02 02:37:15 0 浏览量 回答数 0

回答

Re始终得不到tolken高手帮我看看代码如下 用下面的代码 function get($url) { $ch = curl_init();   if(stripos($url,"https://")!==FALSE){             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);             curl_setopt($ch, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1         }         curl_setopt($ch, CURLOPT_URL, $url);         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );         curl_setopt($ch, CURLOPT_VERBOSE, 1);         curl_setopt($ch, CURLOPT_HEADER, false);         curl_setopt($ch, CURLINFO_HEADER_OUT, false); $rawdata = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {             $students=json_decode($rawdata, true);              return $students ;         }         return null; }

mikebao 2019-12-01 23:52:58 0 浏览量 回答数 0

问题

弹性web托管里的curl功能

piplus 2019-12-01 21:13:18 3850 浏览量 回答数 2

问题

关于php中curl模拟post发送json并接收json问题

爵霸 2019-12-01 20:07:30 1804 浏览量 回答数 1

问题

nginx服务器curlhttps衔接报错!http正常!有人能帮助下吗?

蓝色的土土 2019-12-01 21:59:35 3524 浏览量 回答数 1

回答

回1楼云代维的帖子 发现了个奇葩的问题,curl方式访问百度淘宝网站都正常 下面是代码 curl方式访问 https://mapi.alipay.com/gateway.do? 就出现502错误了 <?php //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "https://mapi.alipay.com/gateway.do?"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); //执行并获取HTML文档内容 $output = curl_exec($ch); //释放curl句柄 curl_close($ch); var_dump($output); ?>

沃沃云 2019-12-02 02:25:20 0 浏览量 回答数 0

回答

基于 PHP/CURL 编写的类库, 使用方法见注释.直接使用, 不用处理Cookie(程序自动会处理, Cookie信息保存于调用类时传递的参数所指定的文件里).<?php /** * Author: dds_feng * Email: dds_feng@qq.com * * Example: * $http = new HttpClient(__DIR__.'/cookie.ck'); * $http->SetReferer('http://foo.com');//set request referer * echo $http->Get('http://foo.com/');//get * $http->SetProxy('http://127.0.0.1:8888');//set http proxy * echo $http->Post('http://bar.com/xxx', array('a'=>'123', 'b'=>'456'));//post **/ class HttpClient{ private $ch; function __construct($cookieJar){ $this->ch = curl_init(); curl_setopt($this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36');//UA curl_setopt($this->ch, CURLOPT_TIMEOUT, 60);//timeout curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, TRUE);//follow redirection curl_setopt($this->ch, CURLOPT_AUTOREFERER, true); curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);//ssl curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($this->ch, CURLOPT_COOKIEJAR, $cookieJar);//cookie jar curl_setopt($this->ch, CURLOPT_COOKIEFILE, $cookieJar); } function __destruct(){ curl_close($this->ch); } final public function SetProxy($proxy='http://127.0.0.1:8888'){ //curl_setopt($this->ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($this->ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);//HTTP proxy //curl_setopt($this->ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);//Socks5 proxy curl_setopt($this->ch, CURLOPT_PROXY, $proxy); } final public function SetReferer($ref=''){ if($ref != ''){ curl_setopt($this->ch, CURLOPT_REFERER, $ref);//Referrer } } final public function SetCookie($ck=''){ if($ck != ''){ curl_setopt($this->ch, CURLOPT_COOKIE, $ck);//Cookie } } final public function Get($url, $header=false, $nobody=false){ curl_setopt($this->ch, CURLOPT_POST, false);//GET curl_setopt($this->ch, CURLOPT_URL, $url); curl_setopt($this->ch, CURLOPT_HEADER, $header);//Response Header curl_setopt($this->ch, CURLOPT_NOBODY, $nobody);//Response Body return curl_exec($this->ch); } final public function Post($url, $data=array(), $header=false, $nobody=false){ curl_setopt($this->ch, CURLOPT_URL, $url); curl_setopt($this->ch, CURLOPT_HEADER, $header);//Response Header curl_setopt($this->ch, CURLOPT_NOBODY, $nobody);//Response Body curl_setopt($this->ch, CURLOPT_POST, true);//POST curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($data));//data return curl_exec($this->ch); } final public function getError(){ return curl_error($this->ch); } } // vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4:

蛮大人123 2019-12-02 01:53:32 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SQL审核 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 人工智能 阿里云云栖号 云栖号案例 云栖号直播