怎样用php中的curl模拟登陆

author author     2023-04-09     350

关键词:

在我的博客《PHP cURL模拟登录与采集分析过程详解》做了详细的介绍,步骤有:
1. 访问目标网站
2. 打开Firebug(快捷键:F12)
3. 清除【Cookie】
4. 重新访问目标网站
5. 设置【网络】为[保持]状态
6. 填写表单,提交登录请求
7. 利用【网络】,分析提交信息
8. 复制请求的cURL命令
9. 分析命令传输的参数与Cookie和前面页面响应内容的关联性
10. 如果遇到Cookie和响应内容都无法查找到的参数,Ctrl+S保存当前页面为全部,利用文本搜索该参数的位置
11. 利用cURL命令组装模拟登录程序

详情请参考博客内容:http://www.zjmainstay.cn/php-curl-step

参考技术A /**
* 模拟登录
*/

//初始化变量
$cookie_file = "tmp.cookie";
$login_url = "http://xxx.com/logon.php";
$verify_code_url = "http://xxx.com/verifyCode.php";

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;
参考技术B 百度会告诉你

php爬虫(curl)模拟登陆获取cookie,然后使用cookie查看个人中心(代码片段)

<!--curl的高级使用--><?php//模拟登陆获取cookie保存到电脑header("content-Type:text/html;charset=UTF-8");/*$cookie_file=tempnam(‘d:/‘,‘cookie‘);*/$cookie_file=‘d:/demo.txt‘;$login_url="http://www.php-z.com/mem 查看详情

怎样用python设计一个爬虫模拟登陆知乎

参考技术Aimportrequestsimporttimeimportjsonimportosimportreimportsysimportsubprocessfrombs4importBeautifulSoupasBSclassZhiHuClient(object):"""连接知乎的工具类,维护一个Session2015.11.11用法:client=ZhiHuClient()#第一次使用时需要调用此方法登录一次... 查看详情

怎样用python设计一个爬虫模拟登陆知乎?

参考技术A两种方法:1.带cookielib和urllib2importurllib2importurllibimportcookielibdeflogin():email=raw_input("请输入用户名:")pwd=raw_input("请输入密码:")data="email":email,"password":pwdpost_data=urllib.urlencode(data)cj=cookielib.CookieJa... 查看详情

请教用curl在php里面模拟表单提交文本+文件的写法

用一个数组:$post_data=array("title"=>"PIC!!!","f"=>"@".$file);$url=UPLOAD_IMG;//$fields[\'f\']=\'@\'.$file;$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);代替之前的那个,然后就可以了打... 查看详情

curl模拟登陆后携带cookie进行post提交报文(代码片段)

...进行“自动的不断同步”。所以我写了一个脚本,先模拟登陆,然后将获得的cookie携带模拟这个手工同步请求。最后再将这个脚本配置到定时任务中每隔30秒钟执行一次。脚本示例#!/bin/bash#登陆账号username=admin#登陆密... 查看详情

php如何带上cookies模拟get表单提交

就是访问网址的时候带上cookies就好了!恩用curl好像是可以的可是带个cookies好像有点麻烦百度了下给的方法好像也不能用自己瞎改改也不行==所以就伸手一次求大神们举个栗子!唔....没财富值了求回答嘻嘻一群只会复制粘贴的百... 查看详情

php模拟post上传

...;><inputtype="submit"></form>像这样的表单,怎样模拟呢?求指条路....你写一个方法把,在php里面可以使用curl库来模拟这样的表单代码如下: //curl实现post请求 publicfunctioncurl_post($url,$data=null) //创建一个新cURL资源 $cur... 查看详情

使用snoopy进行模拟登陆采集

...PHP写的采集类,使用了一下发现功能比较强大,几乎可以模拟浏览器的所有行为,可以实现的功能有:比起使用curl,fsockopen等函数来说方便很多,下面总结一下这个类一些属性与方法的作用。方法:   fetch($url)该方法... 查看详情

使用snoopy进行模拟登陆采集

...PHP写的采集类,使用了一下发现功能比较强大,几乎可以模拟浏览器的所有行为,可以实现的功能有:比起使用curl,fsockopen等函数来说方便很多,下面总结一下这个类一些属性与方法的作用。方法:   fetch($url)该方法... 查看详情

使用curl进行模拟登录

<?php$cookie_path=‘./‘;//设置cookie保存路径 //-----登录要提交的表单数据---------------$vars[‘username‘]=‘张三‘;$vars[‘pwd‘]=‘123‘;//-------------------------------------$method_post=true;//登录提交的url地址(表单中的action 查看详情

《curl技术知识教程》系列分享专栏

...d/201737.html文章PHP采集相关教程之一CURL函数库php中通过curl模拟登陆discuz论坛的实现代码php中通过curlsmtp发送邮件PHPcurl并发最佳实践代码分享CURL的学习和应用(附多线程实现)phpcurl模仿ftp文件上传代码php使用cu 查看详情

php怎样处理https请求

参考技术A具体代码如下:<?php$ch=curl_init();$timeout=5;curl_setopt($ch,CURLOPT_URL,'');curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$file_contents=curl_exec($ch);curl_close($ch);echo$file_contents;?>PHP独特的语法混合了C... 查看详情

php通过curl模拟登录并获取数据

<?php/*通过CURL模拟登录并获取数据 一些网站需要权限认证,必须登录网站后,才能有效地抓取网页并采集内容, 这就需要curl来设置cookie完成模拟登录网页,php的curl在抓取网页内容方 面效率是比较高的,而且支持多线程,而fi... 查看详情

php里模拟post提交是啥意思?

我想问下什么叫做模拟post提交,有什么作用?有什么例子参考下吗?图片上传模拟POST提交有是做什么用的?//这是我写的封装类,也就是模拟POST提交//$durl也就是URL地址,比如www.youku.com//$timeout超时时间//$data 为POST数组//模拟POST... 查看详情

一个网页已经手动打开并登陆成功,怎样用vba接管操作这个网页中的元素。

...VBA对已经打开网页接管控制的一种方法。比方说在本例中怎样在接管后按网页中的一个按(可以任意取一个按钮标签写代码操作)。Subtest2()'已打开网页里面查找百度网,对其进行输入数据DimoWinAsObject,ExistedAsBooleanExisted=FalseWit... 查看详情

curl模拟http请求(代码片段)

简介cURL的官方定义为:curlisacommandlinetoolfortransferringdatawithURLsyntax,即使用URL语法规则来传输数据的命令行工具。PHP支持DanielStenberg创建的libcurl库,能够连接通讯各种服务器、使用各种协议。libcurl目前支持的协议有http、https、ftp、go... 查看详情

如何通过php的curl模拟ajax请求,获取其返回值

这个需要配合js,打开一个html页面,首先js用ajax请求页面,返回第一个页面信息确定处理完毕(ajax有强制同步功能),ajax再访问第二个页面。(或者根据服务器状况,你可以同时提交几个URL,跑几个相同的页面)参数可以由js... 查看详情

php用curl_exec采集页面内容,结果302重定向

怎样采集链接的内容在本地电脑上采集就可以,放到服务器上就会302重定向,curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);这个也用过了,也不行加入这个参数即可:curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);更多关于curl的使用,请参考我的博... 查看详情