(转)php_curl模拟登录有验证码实例
三年来的第一篇博客,还记得那是一个夜深人静的夜晚, 独自一人坐在不到10平米的小屋里,指头迅速的敲打着键盘,这天真TMD热。BJ生活啊。 唉!
最近一直在参加一个论坛批量发帖的项目开发。 模拟登录,模拟发贴,甚至是模拟注册用户。 当然遇到了验证码的问题,初步打算是手工输入验证码, 做了个小测试,
如果登录时需要验证码关键是要保存COOKIE。 CURL POST时带上这个COOKIE就可以了。 如果不需要验证码直接提交参数就可以了。
<?php
/**
* @author 追逐__something
* @version $id
*/
define('SCRIPT_ROOT',dirname(__FILE__).'/');
$act = trim($_REQUEST['act']);
switch($act)
{
case 'login':
// 获取验证码
$code = trim($_REQUEST['code']); // $loginParams为curl模拟登录时post的参数
$loginParams['act'] = 'login';
$loginParams['password'] = '111111';
$loginParams['username'] = 'wlpadmin';
$loginParams['vcode'] = $code; // $cookieFile 为加载验证码时保存的cookie文件名
$cookieFile = SCRIPT_ROOT.'cookie.tmp'; // $targetUrl curl 提交的目标地址
$targetUrl = 'http://local.xx.com/admin/login.php'; // 参数重置
$content = curlLogin($targetUrl, $cookieFile, $loginParams);
echo $content;
break;
case 'authcode':
// Content-Type 验证码的图片类型
header('Content-Type:image/png');
showAuthcode('http://local.xx.com/admin/vcode.php?r=0.03192671708666017');
exit;
break;
} /**
* 模拟登录
* @param string $url 提交到的地址
* @param string $cookieFile 保存cookie的文件
* @param string $loginParams 提交时要post的参数
* @return string $content 返回的内容
*/
function curlLogin($url, $cookieFile, $loginParams)
{
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile); //同时发送Cookie
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $loginParams); //提交查询信息
$content = curl_exec($ch);
curl_close($ch);
return $content;
} /**
* 加载目标网站图片验证码
* @param string $authcode_url 目标网站验证码地址
*/
function showAuthcode( $authcode_url )
{
$cookieFile = SCRIPT_ROOT.'cookie.tmp';
$ch = curl_init($authcode_url);
curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile); // 把返回来的cookie信息保存在文件中
curl_exec($ch);
curl_close($ch);
}
?>
<iframe src="?act=authcode" style='width: 100px; height:40px ' frameborder=0 ></iframe>
<form>
<input type="hidden" name="act" value="login">
<input type="text" name="code" />
<input type="submit" name="submit" >
</form>
此文来自 http://www.cnblogs.com/echo-something/archive/2012/07/18/2597831.html
(转)php_curl模拟登录有验证码实例的更多相关文章
- php_curl模拟登录有验证码实例
<?php/** * @author 追逐__something * @version $id */define('SCRIPT_ROOT',dirname(__FILE__).'/');$ac ...
- C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站
原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...
- Java模拟登录带验证码的教务系统(原理详解)
一:原理 客户端访问服务器,服务器通过Session对象记录会话,服务器可以指定一个唯一的session ID作为cookie来代表每个客户端,用来识别这个客户端接下来的请求. 我们通过Chrome浏 ...
- [PHP自动化-进阶]002.CURL模拟登录带有验证码的网站
引言:继前文<模拟登录并采集数据>,大家似乎看不过瘾,这会再出一发,模拟实现带验证码网站的登录. 这篇文章主要介绍了PHP使用CURL实现对带有验证码的网站进行模拟登录的方法,可以帮助读者 ...
- python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)
在利用scrapy框架爬各种网站时,一定会碰到某些网站是需要登录才能获取信息. 这两天也在学习怎么去模拟登录,通过自己码的代码和借鉴别人的项目,调试成功豆瓣的模拟登录,顺便处理了怎么自动化的处理验证码 ...
- Python爬虫模拟登录带验证码网站
问题分析: 1.爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 2.首先得明白 ...
- php使用curl模拟登录带验证码的网站[开发篇]
需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...
- php使用curl模拟登录带验证码的网站
需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...
- htmlunit 模拟登录 无验证码
1.模拟登录csdn,最开始的时候使用的是httpclient,网上的所有模拟登录csdn的版本都是找到lt/execution/event_id.连同用户名及密码 一起发送即可,但是目前的csdn的 ...
随机推荐
- Codeforces Round #321 (Div. 2) A, B, C, D, E
580A. Kefa and First Steps 题目链接: A. Kefa and First Steps 题意描述: 给出一个序列,求最长不降连续子序列多长? 解题思路: 水题,签到 代码: ...
- synchronized(6)修饰语方法之:static方法
当一个synchronized关键字修饰的方法同时又被static修饰,之前说过,非静态的同步方法会将对象上锁,但是静态方法不属于对象,而是属于类,它会将这个方法所在的类的Class对象上锁. 一个类 ...
- solr 统计中stats的一般用法
//统计数据 根据查询条件 public String getStats(String ipName) { JSONObject obj; JSONArray pageArray = new JSON ...
- 更新项目,uwsgi重新加载和日志文件
uwsgi --reload /var/run/uwsgi.pid uwsgi.pid是uwsgi进程文件 /var/log/uwsgi.log
- zoj3772Calculate the Function(矩阵+线段树)
链接 表达式类似于斐波那契 但是多了一个变量 不能用快速幂来解 不过可以用线段树进行维护 对于每一个点够一个2*2的矩阵 1 a[i] 1 0 这个矩阵应该不陌生 类似于构造斐波那契的那个数列 ...
- WIN2003 IIS相关错误解决方案
我碰到的主要问题是:“Server Application Unavailable 错误”.“无法显示网页”: 1.如果你的.NET版本是2.0及以上的话,那要注意了:win2003是默认安装1.1的 ...
- maven-ali镜像网站setting.xml
简述 使用maven管理jar包的时候,有可能会有网络限制,要解决的这个问题的话可以使用ali的镜像网站. 创建文件 创建settings.xml,内容如下 <settings xmlns=&q ...
- 玩ztree的一段代码
<!DOCTYPE HTML> <html lang="zh" xmlns:th="http://www.thymeleaf.org"> ...
- UVa OJ 494
Kindergarten Counting Game Everybody sit down in a circle. Ok. Listen to me carefully. ``Woooooo, ...
- Android图片压缩上传(二)
之前有用到libjpeg,还是有一定的局限性,最近用了一个新的方式,效果还是挺不错,随着作者的版本更新,Bug也随之变少,目前项目中运用已上线. 1.之前的方式Android图片压缩,不失真,上线项目 ...