[PHP自动化-进阶]001.模拟登录并采集数据

引言:PHP可以通过libcurl实现模拟登录,提交数据,违法乱纪,烧杀抢虐等等事项。

简单说明一下"libcurl",补一下脑:

  • libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。
  • libcurl同时也支持 HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

使用curl可以实现Get和Post请求的方法,伪造来路IP等等功能。。。

切入主题



这一讲,我们为大家准备了如何利用libcurl进行"模拟登录用户并采集数据"。

开启说明

默认情况下,PHP的CURL功能是没有开启的,所以你要自己去开启这个功能,需要如下操作:

在php.ini中把  ;extension= php_curl.dll 前面的  " ; " 号去掉!!!

单刀直入

直接上代码,代码注释已经很详细!各位看官请看下面:

步骤1:

创建一个具有唯一文件名的临时文件,用于cookie信息的存储。 (若成功,则返回新的临时文件名。若失败,则返回 false。)

// 指定Cookie保存文件$cookie_file = tempnam(‘./temp‘, ‘cookie‘); 

步骤2:

初始化一个curl对象,并同时指定要请求的网址,请求携带数据。

// 请求网址
$url  = "http://www.phpyu.com/index.php?action=login";// 请求网址$data = "user=××&pw=××";;
// 初始化CURL对象
$ch = curl_init($url);

步骤3:

设置curl对象参数。

// 设置请求头[无](说明:如果需要把头包含在输出中,则设置属性为一个非零值。)
curl_setopt($ch, CURLOPT_HEADER, 0);
// 设置不输出到浏览器
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 设置请求为通用POST(说明:如果想PHP去做一个正规的HTTP POST,设置属性为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。) curl_setopt($ch, CURLOPT_POST, 1);
// 设置请求携带数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// 设置Cookie保存文件(说明:把返回来的cookie信息保存在$cookie_file文件中)
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

步骤4:

执行请求,并关闭。

// 执行请求
curl_exec($ch);
// 关闭对象
curl_close($ch);

上面已经完成了模拟登录的过程。

完整代码如下:

时间: 2024-10-10 19:30:56

[PHP自动化-进阶]001.模拟登录并采集数据的相关文章

PHP通过CURL模拟登录并获取数据

<?php/*通过CURL模拟登录并获取数据 一些网站需要权限认证,必须登录网站后,才能有效地抓取网页并采集内容, 这就需要curl来设置cookie完成模拟登录网页,php的curl在抓取网页内容方 面效率是比较高的,而且支持多线程,而file_get_contents()效率就要稍低 些.模拟登录的代码如下所示:*/ function login_post($url, $cookie, $post){ $ch = curl_init(); //初始化curl模块 curl_setopt($c

PHP模拟登录并获取数据

cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息.本文以模拟登录开源中国(oschina)为例,和大家分享cURL的使用. PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展. 代码实战先来看登录部分的代码:```//模拟登录 f

C# WebBrowser控件 模拟登录 抓取数据

参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档:http://www.360doc.com/content/14/0810/12/9200790_400769010.shtml 代码如下: [DllImport("wininet.d

HttpWebRequest 模拟登录响应点击事件(开源自己用的HttpHelper类)

平时也经常采集网站数据,也做模拟登录,但一般都是html控件POST到页面登录:还没有遇到用户服务器控件button按钮点击事件登录的,今天像往常一样POST传递参数,但怎么都能登录不了:最后发现还有两个参数需要传,__EVENTVALIDATION和__VIEWSTATE 在传的过程中需要对参数值进行URL编码 System.Web.HttpUtility.UrlEncode(value) 模拟登录代码:在本地写的一个测试的网站来模拟登录,原理都一样: Request request = ne

splinter python浏览器自动化操作,模拟浏览器的行为

Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没有更新了.还 有就是利用selenium,可支持多种浏览器.网上资料比较多.经过比较,我选择了Splinter模块,因为利用Splinter开发浏览器自动化操 作,编写代码比较简单. 一.Splinter的安装 Splinter的使用必修依

测试开发Python培训:模拟登录新浪微博-技术篇

测试开发Python培训:模拟登录新浪微博-技术篇 一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技术实现思路,提高动手能力.这里通过大家都能接触到的系统新浪微博,作为案例. 模拟登录功能比较简单,很多人在学习自动化的时候都会以登陆来作为自己的第一个学习案例,有点像开发语言中第一段代码都是helloworld!一样.登陆简单的模拟登录,直接发post请求就OK,很容易实现. 这里用新浪微博,就是技术实

httpclient 模拟登录 及线程安全

//登录csdn//        String uri = "https://passport.csdn.net/account/login";//        String html = HttpUtil.DownHtml(uri);        //        <input type="hidden" name="lt" value="LT-207426-moK0sGnfCa9aqijJKeLYhFDYiEe2id&

php 模拟登陆(不带验证码)采集数据

这里模拟表单登陆窗口 提交代码部分 1,生成session_id保存到 cookie $login_url = 'http://www.96net.com.cn/Login.php';$cookie_file = dirname(__FILE__)."/pic.cookie"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $login_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_s

基于tcp/ip以太网通信实现0-5v,4-20ma模拟量AI采集以及模拟量AO输出控制-综科智控

ZKA-XXX-ETH 使 用 说 明 书 [ ]绝密 [ ]NDA [X]公开 版本历史 版本 修订日期 修订人 修订内容 1.0 2014-10-13 综科智控 1.0初版正式发布 1.1 2014-12-07 综科智控 填图 1.2 2015-03-01 综科智控 更新配置 1.3 2015-08-13 综科智控 修正组网图 1.4 2015-09-28 综科智控 增加ZKA型号 1.5 2016-05-22 综科智控 增加附件 1.6 2016-11-01 综科智控 修改组网图 1.7