当前位置:  编程技术>php

php curl模拟登录 php模拟表单提交实例

    来源: 互联网  发布时间:2014-08-30

    本文导语:  php curl模拟登录的方法 比如要登录百度的wap文库,链接是  http://wapwenku.baidu.com 点击“登录”链接,来到登录页面,如图 查看该页的html源码,找到它的登录表单:   代码示例: 用户名: 密码: 不使用自动登录 ...

php curl模拟登录的方法

比如要登录百度的wap文库,链接是  http://wapwenku.baidu.com
点击“登录”链接,来到登录页面,如图

查看该页的html源码,找到它的登录表单:
 

代码示例:




用户名:


密码:



不使用自动登录
保存自动登录书签
保存自动登录cookie


 注册











可以看出一些信息:
action=”http://wappass.baidu.com/passport/” method=”post”

这是登录信息提交的链接和方式。

所以我们程序中要做的事情,就是:把改表单中的所有input、select和textarea(如果有)的信息(包括隐藏的)用curl模拟表单的post方式提交给action中的那个连接就可以了实现登录了。

这里要提一点,很多网站的登录表单中的参数是变化的,比如这个表单中,我通过比较两次刷新的不同页面的源码,发现表单中有个hidden的input值是变化的。

就是这个

那么,这个uid的值就得用程序动态的获取。很简单,还是curl配合正则就可以获取,代码如下

获取表单中动态的隐藏值:
 

代码示例:
$ch = curl_init();
curl_setopt($ch, curlopt_url, "http://wappass.baidu.com/passport/");
curl_setopt($ch, curlopt_cookiejar, $this->cookie_jar);
curl_setopt($ch, curlopt_header,1);
curl_setopt($ch, curlopt_returntransfer, true);
curl_setopt($ch, curlopt_ssl_verifypeer, false);
curl_setopt($ch, curlopt_ssl_verifyhost, false);
$tmp = curl_exec($ch);
curl_close($ch);
preg_match("//i", $tmp, $temparr);
 
$uid = $temparr[1];
 

现在这个$uid 变量就获取到了本次抓取页面的表单中uid。
接下来该模拟提交表单了:
 

代码示例:
$ch = curl_init();
curl_setopt($ch, curlopt_url, "http://wappass.baidu.com/passport/");
curl_setopt($ch, curlopt_post, 1);
curl_setopt($ch, curlopt_postfields,  "login_save=0&login=yes&can_input=0&u=http://wapwenku.baidu.com/&tpl=&tn=&pu=normal&ssid=normal&from=0&bd_page_type=1
&uid=".$uid."&login_username=".$username."&login_loginpass=".$password);
curl_setopt($ch, curlopt_cookiejar, $cookie_jar);
curl_setopt($ch, curlopt_header,1);
curl_setopt($ch, curlopt_returntransfer, true);
curl_setopt($ch, curlopt_ssl_verifypeer, false);
curl_setopt($ch, curlopt_ssl_verifyhost, false);
$str = curl_exec($ch);
curl_close($ch);
echo $str;exit;
//判断是否登录成功
if (strpos($str, "http/1.1 302 found") !== false)
{
$is_login = 1;
}
 

注意,$username和$password 是你的百度的用户名和密码,$cookie_jar是cookie保存路径。
以下是完整的登录百度的登录类实例。
 

代码示例:

代码说明:
测试过程中,曾把代码写在一个function里而没用类来封装,结果没有达到效果。
暂不清楚为什么出现这个种情况,建议最好把登录方法封装到类中。

>>> 更多有关php模拟登录的文章,请参考专题链接:php模拟登录 php curl模拟登录教程大全


    
 
 

您可能感兴趣的文章:

  • PHP表单构建工具 FormBuilder
  • php提交表单到当前页面、提交表单后页面重定向的实例代码
  • php获取表单中多个同名input元素的值
  • php 表单提交大量数据发生丢失的解决方法
  • PHP防止表单重复提交的几种常用方法汇总
  • php表单请求获得数据求和示例
  • PHP判断表单复选框选中状态完整例子
  • php表单提交特殊字符过滤方法
  • php中限制ip段访问、禁止ip提交表单的代码分享
  • 一个php表单字段格式验证类
  • php怎么用telnet提交表单
  • php下常用表单验证的正则表达式
  • 美图秀秀web开放平台--PHP流式上传和表单上传示例分享
  • PHP提交表单失败后如何保留已经填写的信息
  • PHP对表单提交特殊字符的过滤和处理方法汇总
  • PHP模拟POST表单提交(支持HTTP、HTTPS)实例
  • PHP的表单类 Zebra_Form
  • PHP jQuery表单,带验证具体实现方法
  • PHP标记风格、注释、表单获取、字符串类型、变量解析的实例解析
  • php session_id()函数介绍及代码实例
  • php 小数点取法实例总结
  • php生成透明背景图片实例
  • php防止sql注入代码实例
  • php逐字拆分字符串 php字符串拆分实例
  • php解析json数据实例
  • php定界符<<<使用技巧和实例
  • php读取sqlite数据库入门实例
  • PHP 调试工具 PHP_Dyn iis7站长之家
  • php读取mysql数据库入门实例
  • php生成excel列序号代码实例
  • PHP三元运算的2种写法代码实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS
  • php通过socket_bind()设置IP地址代码示例
  • php服务器探针显示php服务器信息
  • php安装完成后如何添加mysql扩展
  • PHP缓存加速器 Alternative PHP Cache (APC)
  • PHP的substr() 函数用法
  • PHP源文件加密工具 PHP Screw
  • PHP介绍及学习网站推荐
  • PHP自动化测试 PHP-QAT
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • PHP 的 HTTP 客户端库 PHP Buzz
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • PHP 调试工具 PHP_Dyn


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3