0

0

php curl 模拟登陆京东,”总提示刷新页面后重新提交“

php中文网

php中文网

发布时间:2016-06-23 13:37:16

|

1633人浏览过

|

来源于php中文网

原创

开发完事之后,登陆是可以的,但是后来一直提示
Array
(
    [username] => 请刷新页面后重新提交
)
这个不知道是怎么回事,一直没找到什么原因,郁闷
话不多说,上代码,盼望做过的英雄帮忙下,

<?phpclass util_curl {	var $headers;	var $user_agent;	var $compression;	var $cookie_file;	var $proxy;	function util_curl($cookies=TRUE,$cookie='cookies.txt',$header = array(),$compression='gzip',$proxy='') {		if(empty($header))		{			$this->headers[] = 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';			$this->headers[] = 'Connection: Keep-Alive';			//$this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';			//$this->headers[] = '';		}		$this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';		$this->compression=$compression;		$this->proxy=$proxy;		$this->cookies=$cookies;		if ($this->cookies == TRUE) $this->cookie($cookie);	}	function cookie($cookie_file) {		if (file_exists($cookie_file)) {			$this->cookie_file=$cookie_file;		} else {			if($h = fopen($cookie_file,'w')){				$this->cookie_file=$cookie_file;				fclose($h);			} else {				$this->error('The cookie file could not be opened. Make sure this directory has the correct permissions');			}		}	}	function get($url) {		$process = curl_init($url);		curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);		curl_setopt($process, CURLOPT_HEADER, 0);		curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);		if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);		if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);		curl_setopt($process,CURLOPT_ENCODING , $this->compression);		curl_setopt($process, CURLOPT_TIMEOUT, 30);		if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy);		curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);		curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);		$return = curl_exec($process);		curl_close($process);		return $return;	}	function post($url,$data) {		$process = curl_init($url);		curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);		curl_setopt($process, CURLOPT_HEADER, 0);		curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);		if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);		if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);		curl_setopt($process, CURLOPT_ENCODING , $this->compression);		curl_setopt($process, CURLOPT_TIMEOUT, 30);		if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy);		curl_setopt($process, CURLOPT_POSTFIELDS, $data);		curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);		curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);		curl_setopt($process, CURLOPT_POST, 1);		$return = curl_exec($process);		curl_close($process);		return $return;	}	function vpost($url,$data){ // 模拟提交数据函数		$curl = curl_init(); // 启动一个CURL会话		//$this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=GBK';		curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);		curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在		curl_setopt($curl, CURLOPT_USERAGENT, $this->user_agent); // 模拟用户使用的浏览器		//curl_setopt($curl, CURLOPT_NOBODY, 0);		if ($this->cookies == TRUE) curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file);;		if ($this->cookies == TRUE) curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie_file);		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转		curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer		curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求		curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包		curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环		curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回		$tmpInfo = curl_exec($curl); // 执行操作		if (curl_errno($curl)) {			echo 'Errno'.curl_error($curl);//捕抓异常		}		curl_close($curl); // 关闭CURL会话		return $tmpInfo; // 返回数据	}	function vget($url){ // 模拟提交数据函数		$curl = curl_init(); // 启动一个CURL会话		//$this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=GBK';		curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);		curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在		curl_setopt($curl, CURLOPT_USERAGENT, $this->user_agent); // 模拟用户使用的浏览器		//curl_setopt($curl, CURLOPT_NOBODY, 0);		if ($this->cookies == TRUE) curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file);;		if ($this->cookies == TRUE) curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie_file);		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转		curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer		//curl_setopt($curl, CURLOPT_POST, 0); // 发送一个常规的Post请求		//curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包		curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环		curl_setopt($curl, CURLOPT_HEADER, 1); // 显示返回的Header区域内容		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回		$tmpInfo = curl_exec($curl); // 执行操作		if (curl_errno($curl)) {			echo 'Errno'.curl_error($curl);//捕抓异常		}		curl_close($curl); // 关闭CURL会话		return $tmpInfo; // 返回数据	}	function error($error) {		echo "<center><div style='width:500px;border: 3px solid #FFEEFF; padding: 3px; background-color: #FFDDFF;font-family: verdana; font-size: 10px'><b>util_curl Error</b><br>$error</div></center>";		die;	}}$shopUser = array();$shopUser['name'] = 'xxxx';$shopUser['password'] = 'xxxxxxxxx';$cookieFile = './cookie_aaa.txt';$http = new util_curl(true,$cookieFile);//1.获取登录页面代码,从中找出uuid变量值$showLoginUrl = "https://passport.jd.com/new/login.aspx";$loginViewStr = $http->vget($showLoginUrl);preg_match('/<input type="hidden" id="uuid" name="uuid" value="([\s\S]*?)"/',$loginViewStr,$rs);if(!isset($rs[1])) throw new Exception('分析页面源码分析uuid失败');$uuid = $rs[1];$loginUrl = "https://passport.jd.com/uc/loginService?uuid={$uuid}&ReturnUrl=http%3A%2F%2Fwww.jd.com%2F";$fields = "uuid={$uuid}&loginname={$shopUser['name']}&nloginpwd={$shopUser['password']}&loginpwd={$shopUser['password']}&machineNet=&machineCpu=&machineDisk=&authcode=";$response = $http->vpost($loginUrl,$fields);$jsonObj = json_decode(str_replace(array('(',')'),'',$response),true);if(isset($jsonObj['success'])) echo '登陆成功';print_r($jsonObj);exit;

StickerBaker
StickerBaker

免费开源的AI贴纸头像生成工具

下载

回复讨论(解决方案)

没有做过这个的人吗

需要输入验证码吧

我是用易语言写,但方法基本一样,也是提示“请刷新页面后重新提交”,我看抓的提交数据包是:
“uuid=”+uuid+“&loginname="+用户名+&nloginpwd="+密码+"&loginpwd="+密码+"&machineNet=&machineCpu=&machineDisk=&authcode=&mJODPRgWFp=DKNDP”

主要是authcode=后面还有一个mJODPRgWFp=DKNDP的东西,应该它是有用处的,如果我们不能正确提交这个数据就会被判无效吧,唉,我也研究不出来。

我的Q 957997543

cookie 缓存文件名应使用绝对路径

但即便是这样做了,也不能保证成功
京东应该和淘宝一样,使用了 js 操控第三方验证服务。所以的的程序不能解析和执行 js 的话,成功的概率为 0

这个
http://blog.csdn.net/jdgdf566/article/details/13632111
恐怕也起不了作用。既然原因如4楼说的的话。

不知楼主解决了没有,我也遇到同样问题!

楼主解决了吗?同求解决方案

楼主问题解决了么?求解决方案

京东用了flashcookie,不好获取,我用c++ builder搞半天也没取出关键cookie:
track=c09a16fa-8dfd-015b-b289-1372d4c03405
只要得到这个cookie其他的就好办了。

楼主 解决的吗 求分享成果

看一下单点登陆的过程就知道淘宝和京东如何获取这些信息了。

相关文章

京东
京东

京东app是一款移动购物软件,具有商品搜索/浏览、评论查阅、商品购买、在线支付/货到付款、订单查询、物流跟踪、晒单/评价、返修退换货等功能,为您打造简单、快乐的生活体验。有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号