您的位置:首页 > 其它

如何开发一个抢单chrome插件

2017-05-26 14:12 1461 查看
出于学写chrome插件&满足买买买心态的目的,试了下从零开始写一个chrome抢单插件。实验的网站是nike和adidas的美国官网。


大致历程

买本chrome插件教程通读一下。 在阳台上晒晒太阳喝着下午茶,看起来还巨简单,很开心的2小时。

跟着教程学写最简单的chrome插件。so easy,一晚上很愉快的度过,一点点成就感。

了解nike和adidas网站购买下单流程,分析用户需求&网络请求。需要点耐心,国内网站会更快一点。

设计插件功能和样式。画画页面设计图(就是几个表单),流程图(状态指来指去,一种天下我有的爽感)。

写插件。一言难尽吧~~~

插件设计

需求

用户生成待抢订单,填写商品url、规格、数量、地址、支付信息等。

自动刷商品、下单。(可同时刷多单,查看订单列表、状态、详情)

功能概述

根据用户给的网站账号自动登录。

根据商品链接抓取商品信息、规格等。

生成待抢订单。

自动刷商品页,加购物车。

自动填写地址、支付信息,下单。

页面设计

配置页(nike和adidas用户账户、address、payment信息,其他可配置项)

商品详情页

订单详情页

订单列表页

订单状态图

自己在稿纸上画了一个图,大致包括prepare、start、cart、ordering、succ、fail等几个状态。


adidas为例,实际状态比预想的多,用一个Pipeline控制流程:

private static final int CODE_FAIL = 0;
private static final int CODE_PREPARE_ORDER = 1;
private static final int CODE_ADD_TO_CART = 2;
private static final int CODE_CHECKOUT = 3;
private static final int CODE_ADD_ADDRESS = 4;
private static final int CODE_CHOOSE_SHIPPING = 5;
private static final int CODE_ADD_PAYMENT = 6;
private static final int CODE_ADD_PAYMENT_1 = 12;
private static final int CODE_REVIEW_ORDER_1 = 11;
private static final int CODE_REVIEW_ORDER = 7;
private static final int CODE_THANK_YOU_PAGE = 8;
private static final int CODE_SIGN_IN = 9;
private static final int CODE_UNKNOWN = 10;


数据表设计

订单表 Order

OrderStatus(enum 订单状态)

商品表 Goods

用户信息表

User, 插件用户

Account, 购物网站账户

Address,购物网站收货地址

购物网站表 Site

插件开发

包括2部分,摘取一些代码片段以供参考。

插件本身: 页面、数据表

模拟下单:登录、规格库存获取、加购物车、下单,模拟用户手动下单时发送的网络请求

抓取商品页 (以Adidas为例)

private ExecResult<Document> getOneSkuInfoPage(String url) {
try {
doc = AdidasUtils.getHttpGetResponseWithDocument(url, "", httpsClient);
return createResult(true, doc, null);
} catch (IOException e) {
LogUtils.info(AdidasConstants.ERROR_PREFIX + e.toString());
}
return createResult(false, doc, "Get goods page fail.");
}

public static Document getHttpGetResponseWithDocument(String url, String referrer,
DecompressingHttpClient httpClient) throws IOException {
AdidasUtils.printHtmlUrl(url);
response = getHttpGetResponse(url, referrer, httpClient);
Document doc = Jsoup.parse(EntityUtils.toString(response.getEntity(), "UTF-8"));
EntityUtils.consume(response.getEntity());
AdidasUtils.printHtmlTitle(doc);
return doc;
}


在商品详情页抓取商品信息

标题、描述(这些内容不会变,很好抓,只要取到响应的DOM节点就好)

sku属性:颜色、尺码、价格、库存(和每个型号的skuId对应,加购物车时用skuId)

http://blog.csdn.net/maowenbei/article/details/72809019

登录

模拟登录的过程有点难,会遇到各种问题,比如token之类的。见 http://blog.csdn.net/maowenbei/article/details/72809063
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  chrome chrome插件 抢单