淘宝TOP获取sessionkey
说明:本程序只是方便ISV调试使用,集成二次登录是无法通过审核的,用户不会在你的网站里面输入淘宝的用户名和密码的,就好比你不会在一个山寨网站输入你的银行卡号和密码一样。
Copy code
package com.carver.tool;
import java.net.URLEncoder;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.TextPage;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlButton;
import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlImageInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;/**
* 登录淘宝网获取授权。
*
* @author carver.gu
* @since 1.0, Nov 11, 2009
*/
public class LoginUtil {private static final String ONLINE_CONTAINER = "http://container.open.taobao.com/container?appkey=";
private static final Pattern P_SESSION = Pattern.compile("top\\_session=(\\w+?)&");static {
Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.SEVERE);
Logger.getLogger("org.apache.commons.httpclient.HttpMethodBase").setLevel(Level.SEVERE);
}public static void main(String[] args) throws Exception {
String session = getOnlineSession("app_key", "username", "password");
System.out.println("session_key: " + session);
}public static String getOnlineSession(String appkey, String uid, String pwd) throws Exception {
String url = "http://member1.taobao.com/member/mini_login.htm?login_type=3&redirect_url=";
return getSession(url, ONLINE_CONTAINER, appkey, uid, pwd);
}private static String getSession(String loginUrl, String topUrl, String appkey, String uid,
String pwd) throws Exception {
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);String fullUrl = loginUrl + URLEncoder.encode(topUrl + appkey, "utf-8");
HtmlPage loginPage = webClient.getPage(fullUrl);
HtmlForm loginForm = loginPage.getForms().get(0);
HtmlTextInput uidInput = loginForm.getInputByName("TPL_username");
uidInput.setValueAttribute(uid);
HtmlPasswordInput pwdInput = loginForm.getInputByName("TPL_password");
pwdInput.setValueAttribute(pwd);
HtmlButton loginButton = loginForm.getButtonByName("");HtmlPage loginRsp = null;
try {
Page rsp = loginButton.click();
if (rsp instanceof HtmlPage) {
loginRsp = (HtmlPage) rsp;
} else if (rsp instanceof TextPage) {
TextPage textRsp = (TextPage) rsp;
return extractSession(textRsp.getContent());
} else {
return null;
}
} catch (FailingHttpStatusCodeException e) {
if (e.getStatusCode() == 404) {
return extractSession(e.getMessage());
}
} catch (Exception e) {
}HtmlCheckBoxInput agreeCheck = (HtmlCheckBoxInput) loginRsp.getElementById("agreement");
if (agreeCheck == null) {
return extractSession(loginRsp.getWebResponse().getRequestSettings().getUrl().toString());
} else {
agreeCheck.click();
}HtmlForm agreeForm = loginRsp.getForms().get(1);
List<HtmlElement> inputElements = agreeForm.getHtmlElementsByTagName("input");
HtmlImageInput agreeButton = null;
for (HtmlElement inputElement : inputElements) {
if (inputElement instanceof HtmlImageInput) {
agreeButton = (HtmlImageInput) inputElement;
break;
}
}Page agreeRsp = null;
try {
agreeRsp = agreeButton.click();
} catch (FailingHttpStatusCodeException e) {
if (e.getStatusCode() == 404) {
return extractSession(e.getMessage());
}
} catch (Exception e) {
}
return extractSession(agreeRsp.getWebResponse().getRequestSettings().getUrl().toString());
}private static String extractSession(String response) {
Matcher matcher = P_SESSION.matcher(response);
if (matcher.find()) {
return matcher.group(1);
} else {
return null;
}
}}
经测试,上面的程序可以获取任何类型的应用(Web,客户端)的SessionKey,ISV们有福了。
上面的程序依赖于HtmlUnit这个工具的所有Jar包,需要的请到HtmlUnit的官方网站下载。
这样做是方便了用户,但好想违反了TOP的审核规则,这样做估计审核会通不过:
审核规则第二条:“2、应用不允许出现二次登陆、注册入口 ”
http://wiki.open.taobao.com/index.php/%E5%AE%A1%E6%A0%B8%E8%A7%84%E5%88%99
做程序的也可以赚点外快,想我这样:
http://t.cn/zOyltbx
转载于:https://blog.51cto.com/oyxm0/916901
淘宝TOP获取sessionkey相关推荐
- 淘宝API学习之道:淘宝TOP之API接口接入教程
作为一个中小型站点开发人员,淘宝API的开放大大缩短了站点的开发周期和运作效率.面对海量的数据.开发人员仅仅要细致阅读开发文档,熟悉对应的接口,就能够把数据导入自己的站点,这样就不必望洋兴叹了. 眼下 ...
- 淘宝TOP程序API接口接入教程--入门篇
作为一个中小型网站开发者,淘宝API的开放大大缩短了网站的开发周期和运作效率,面对海量的数据,开发者只要仔细阅读开发文档,熟悉相应的接口,就可以把数据导入自己的网站,这样就不必望洋兴叹了. 目前淘宝T ...
- Python爬虫实战(5):模拟登录淘宝并获取所有订单
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- python淘宝爬虫登陆功能和下单功能_Python 爬虫实战5 模拟登录淘宝并获取所有订单...
经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 ...
- 淘宝 TOP 平台Open API入门篇
淘宝 TOP 平台Open API入门篇 [未经本人许可 严禁转载] 前不久刚写了一篇关于淘宝Open API的入门教程,具体见http://blog.csdn.net/hereweare2009/a ...
- Python爬虫实战五之模拟登录淘宝并获取所有订单
本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 学会应对出现验证码的情况 体会一下复杂的模拟登录机制 探索部分成果 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POS ...
- Python 爬虫实战5 模拟登录淘宝并获取所有订单
经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 python模拟登录淘宝网页 获取登录用户的所有订单详情 ...
- 淘宝/天猫API接口,item_sku - 淘宝商品SKU详细信息查询,淘宝/天猫获取sku详细信息 API 返回值说明
欢迎使用淘宝API接口(item_sku - 淘宝商品SKU详细信息查询 ) 你好! 这是你使用我们的淘宝API接口获取商品详细接口说明. 测试地址:获取Key和secret 测试结果: Reques ...
- 淘宝/天猫获取sku详情API接口
淘宝/天猫获取sku详细信息 API 返回值说明 API接口: item_sku-获取sku详细信息 公共参数 请求地址: 登录 - 跨境电商平台接口提供商 数据采集公司 数据接口定制服务 企业级数据 ...
- 淘宝/天猫获取卖出的商品订单列表API接口,店铺订单API接口,店铺订单详情API接口
一.淘宝/天猫获取卖出的商品订单列表API接口,店铺订单API接口,店铺订单详情API接口代码如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接 ...
最新文章
- 同步两个数据库的结构或者数据
- python表白-520使用Python实现“我爱你”表白
- Java Script中常见操作
- 常系数线性微分方程的直接解法-利用特征方程
- bug in MicrosoftAjax.debug.js
- 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享
- NSTimer 销毁问题 和 iOS中控制器的释放问题
- JDK8启动时,参数传递过程
- 菜鸟html代码在线,html菜鸟教程,HTML新手如何快速入门
- Spring Cloud微服务实战视频教程百度网盘下载
- itest听力答案2020_itest答案.doc
- 高等数学——变限积分求导
- sql order by错top(100)percent
- turn.js 异步请求图片资源,实现电子书翻页效果 报错 ”The page 1 dose not exist”
- UG/nx12.0经典界面设置
- 乳腺结节属于癌前病变吗?
- 通达OA审批流程添加水印功能,支持预览、办理和打印
- SLF4J中的桥接器与源码剖析
- 文化中国 系列二:纪连海读历史品人物
- Xshell6 评估期已过——解决办法
热门文章
- paip.图形化编程厉器.net vs2010 工作流WF4 hello word
- paip.提升ASP编程安全性之脚本部件
- 阿里巴巴的AI“发动机”
- 思科CEO自爆:G20虚拟会议用的我家技术
- 5G时代下的移动边缘计算(MEC)探索系列之四
- 【优化算法】混沌博弈优化算法(CGO)【含Matlab源码 1803期】
- 【优化求解】基于matlab NSGA2算法多技能员工调度优化模型【含Matlab源码 1775期】
- 毕业题目:Matlab GUI界面
- 【人脸识别】基于matlab小波不变矩人脸识别【含Matlab源码 1355期】
- 【手写字母识别】基于matlab GUI模板匹配手写大写字母识别【含Matlab源码 115期】