1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP curl模拟登录带验证码的网站

PHP curl模拟登录带验证码的网站

时间:2022-09-23 18:28:23

相关推荐

PHP curl模拟登录带验证码的网站

php教程|php手册

php_curl模拟登录,php_curl登录淘宝

php教程-php手册

818源码,ubuntu每次设代理,没有tomcat之前用什么,爬虫工具利润,php异常处理教程交流,普洱seo排名lzw

最近接了个项目,其中有需求是要登录带验证码的网站,获取数据,但是我们不可能人为的一直去记录数据,想通过自动采集的方式进行,下面小编给大家带来的相关代码

易语言 网络源码,vscode 代码工作区,ubuntu与cent,tomcat日志定时删除,foxpro爬虫,php 搜索 like,南宁seo技术哪家好,仿京东网站 模板,dz网站商城模板下载lzw

里程密博客源码,ubuntu打印学号姓名,tomcat布置两个端口,爬虫不是python嘛,php如何禁止国外ip访问,seo术语口诀lzw

需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下!

display();

}

public function _initialize(){

foreach($this->cookieName as $key => $name)

{

$this->cookiePathFile[] = ROOT_PATH . $this->cookiePath . $this->cookieName[$key] . ‘_xxx.txt’;

}

}

/**

* 登录xxx

*/

public function xxxLogin()

{

$username = I(‘username’);

$password = I(‘password’);

$verifyCode = I(‘verify’);

$loginData = array(

‘__VIEWSTATE’ => ‘/wEPDwUKMTU0MzAzOTU4NmQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDExvZ2luX1N1Ym1pdL/yae69NsY163G3yuP0lxjz8oXu’,

//不把参数补全可能会不被响应哦

‘__VIEWSTATEGENERATOR’ => ‘DC42DE27’,

‘txt_UserName’ => $username,

‘txt_PWD’ => $password,

‘txt_VerifyCode’ => $verifyCode,

‘SMONEY’ => ‘ABC’,

‘Login_Submit.x’ => ’52’,

‘Login_Submit.y’ => ’19’,

);

$getBack = $this->_cookieRequest(‘/noLogin.aspx’, $loginData);

if(preg_match(‘/<div[^\

(.*?)/s’, $getBack, $match)){

echo ‘matched\r\n’;

print_r($match);

}else{

echo $getBack, ‘

‘;

$paramsFull = parse_url($getBack);

parse_str($paramsFull[‘query’], $paramsFull[‘parsedQuery’]);

if(!empty($paramsFull[‘parsedQuery’][‘Warn’])) {

$msg = “您好,欢迎来P,请先登录。”;

switch ($paramsFull[‘parsedQuery’][‘Warn’])

{

case ‘2’:

$msg = ‘您输入的验证码错误,请重试’;

break;

case ‘3’:

$msg = ‘该帐号不存在,还没帐号?’;

break;

case ‘5’:

$msg = ‘账户已注销’;

break;

case ‘6’:

$msg = ‘密码错误,如果连续错误3次半小时内不能登录!’;

break;

case ’20’:

$msg = ‘今日密码错误3次及以上,请于半小时后再来登录!’;

break;

case ’21’:

$msg = ‘今日您所在IP的所有帐号密码错误9次以上,请于半小时后再来登录!’;

break;

case ’22’:

$msg = ‘登录失败,您所在IP今日登录的帐号过多!’;

break;

case ’23’:

$msg = ‘登录失败,验证码失效!’;

break;

case ’32’:

$msg = ‘该帐号已经绑定其他xx帐号!’;

break;

case ’33’:

$msg = ‘一台电脑一天只能注册一个帐号!’;

break;

}

$this->error($msg, ”, 5);

}else{

$_SESSION[‘user_id’] = ‘123456’;

//登录设置session

$this->success(‘登录P网站成功’, U(‘Index/index’), 5);

}

}

}

/**

* 获取验证码

*/

public function getVerifyCode()

{

$img = $this->_cookieRequest(‘/VerifyCode_Login.aspx?id=’ . rand(10000,999999), null, true, 1);

echo $img;

}

/**

* 删除cookie

*/

public function clearCookie()

{

for($i = 0; $i cookieName); $i++)

{

setcookie($this->cookieName[$i], ”, time() – 3600);

}

// unlink($this->cookiePathFile);

$this->success(‘清除cookie成功!’);

}

/**

* 带COOKIE的访问curl

* @param $url 访问地址

* @param bool|array $data 传递的数据

* @param bool $redirect 是否获取重定向的地址

* @return mixed 地址或者返回内容

*/

public function _cookieRequest($url, $data = null, $redirect = false, $cookieNum = 0)

{

$ch = curl_init();

$params[CURLOPT_URL] = $url; //请求url地址

$params[CURLOPT_HEADER] = false; //是否返回响应头信息

$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回

$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向

$params[CURLOPT_USERAGENT] = ‘Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/0101 Firefox/9.0.1’;

if($data)

{

$params[CURLOPT_POST] = true;

$params[CURLOPT_POSTFIELDS] = http_build_query($data);

}

//判断是否有cookie,有的话直接使用

if (!empty($_COOKIE[$this->cookieName[$cookieNum]]) && is_file($this->cookiePathFile[$cookieNum]))

{

$params[CURLOPT_COOKIEFILE] = $this->cookiePathFile[$cookieNum]; //这里判断cookie

}

else

{

//

$cookie_jar = tempnam($cookie_path, ‘cookie’);

//产生一个cookie文件

$params[CURLOPT_COOKIEJAR] = $this->cookiePathFile[$cookieNum]; //写入cookie信息

setcookie($this->cookieName[$cookieNum], $this->cookiePathFile[$cookieNum], time() + 120); //保存cookie路径

}

curl_setopt_array($ch, $params);

//传入curl参数

$content = curl_exec($ch);

$headers = curl_getinfo($ch);

// echo $content;

curl_close($ch);

if ($url != $headers[“url”] && $redirect == false)

{

return $headers[“url”];

}

return $content;

}

}

登录以后,就可以使用带cookie的访问其他页面了!

ps:php curl 登录淘宝

提交上去后显示为填写验证码,登录不上去

填写验证码提交:

umto=&action=Authenticator&event_submit_do_login=anything&from=tb&fc=default&style=default&css_style=&tid=XOR_1_000000000000000000000000000000_635045544

70A7C717F750278&support=000001&CtrlVersion=1,0,0,7&loginType=3&minititle=&minipara=&pstrong=&llnick=&sign=&need_sign=&isIgnore=&full_redirect=&popid=&callback=&guf=&not_duplite_str=&need_user_id=&poy=XOR_1_000000000000000000000000000000_625A424

A45137C6F7A7F0B786D08&gvfdcname=&gvfdcre=&from_encoding=&TPL_redirect_url=http:&TPL_username=xxx&TPL_password=xxxx&need_check_code=&&TPL_checkcode=

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。