当前位置:首页 » 编程语言 » phpcurl模拟登陆

phpcurl模拟登陆

发布时间: 2022-11-01 21:10:56

php模拟登陆知乎

想要爬取知乎,首先要解决的就是登录问题,知乎登录还是比较简单的,这里有一个示例:
https://demo.zjmainstay.cn/php/curl/hulogin.php

而爬取,不过是对登录成功之后的得到的cookie进行再次利用,使用
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
即可。
上面示例最后一步获取登录成功后的首页就做了示范。

至于爬取过程对链接(文章链接、专栏链接等)的解析,需要针对来处理了。
解析可以用phpQuery,也可以用正则。

你可以参考我这个全站爬取程序:
https://github.com/Zjmainstay/CurlMulti/blob/webClone/demo/custom/webClone.php

更多关于PHPcURL的内容,请参考《PHPcURL实现模拟登录与采集使用方法详解》
http://www.zjmainstay.cn/php-curl

更深入讨论可以通过我的博客找我。

Ⅱ php 通过curl如何模拟登陆新浪微博

呵呵,我在寻找curl模拟登陆微信公众平台的资料

Ⅲ php curl 模拟登录 响应头cookie 怎么获取

CURLOPT_COOKIEJAR:保存提交后反馈的cookie数据
例:
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);

更多关于cURL的用法,请参考我的博客《PHPcURL应用》
http://www.zjmainstay.cn/php-curl

Ⅳ php curl 模拟登录 失败不成功 高手来解救!

请使用SNOOPY,你网络一下就有下载地址了他是对CURL的封装,大网站很多都用这个

Ⅳ php curl 模拟登录并获取数据实例详解

PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展。
代码实战
先来看登录部分的代码:
//模拟登录
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、输出数据。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Ⅵ PHP的curl模拟·登录老是失败出现了405错误

405 是指请求的 URL 不支持请求的方法, htm(除伪静态)是静态页面,是只能使用 get 方法的,而你要登录,要用post,而你这里也确实是用的 post,那么我觉得你应该是 URL 取错了。像这种 post 的地址都要是有程序处理的,你再回去看看原来页面中 form 上的 action 地址吧

Ⅶ 如何判断php中curl模拟登陆是否成功

/**
* 模拟登录
*/

//初始化变量
$cookie_file = "tmp.cookie";
$login_url = "";
$verify_code_url = "";

echo "正在获取COOKIE...\n";
$curlj = curl_init();
$timeout = 5;
curl_setopt($curl, CURLOPT_URL, $login_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //获取COOKIE并存储
$contents = curl_exec($curl);
curl_close($curl);

echo "COOKIE获取完成,正在取验证码...\n";
//取出验证码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $verify_code_url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$img = curl_exec($curl);
curl_close($curl);

$fp = fopen("verifyCode.jpg","w");
fwrite($fp,$img);
fclose($fp);
echo "验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存\n";
//停止运行20秒
sleep(20);

echo "休眠完成,开始取验证码...\n";
$code = file_get_contents("code.txt");
echo "验证码成功取出:$code\n";
echo "正在准备模拟登录...\n";

$post = "username=maben&pwd=hahahaha&verifycode=$code";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$result=curl_exec($curl);
curl_close($curl);

//这一块根据自己抓包获取到的网站上的数据来做判断
if(substr_count($result,"登录成功")){
echo "登录成功\n";
}else{
echo "登录失败\n";
exit;
}

热点内容
我的世界网易版服务器空岛制作 发布:2025-01-10 05:11:35 浏览:846
微信怎么设置微信密码忘了怎么办啊 发布:2025-01-10 05:09:17 浏览:571
净网密码是什么 发布:2025-01-10 05:04:31 浏览:821
C语言醉酒 发布:2025-01-10 05:02:07 浏览:761
淘宝上传宝贝品牌怎么填写 发布:2025-01-10 04:27:26 浏览:552
在计算机的存储单元中存储的 发布:2025-01-10 04:26:37 浏览:733
压缩表qb 发布:2025-01-10 04:24:55 浏览:1000
linuxhttpd访问 发布:2025-01-10 04:17:57 浏览:405
java实时监控 发布:2025-01-10 04:11:46 浏览:363
c语言程序试题 发布:2025-01-10 04:05:17 浏览:793