GithubHelp home page GithubHelp logo

jd-autobuy's Introduction

JD_AutoBuy

京东抢购

Python爬虫,自动登录京东网站,查询商品库存,价格,显示购物车详情等。
可以指定抢购商品,自动购买下单,然后手动去京东付款就行。

chang log

运行环境

Python 2.7

第三方库

环境配置

pip install requests
pip install beautifulsoup4

使用帮助

> python scraper-jd.py -h
usage: scraper-jd.py [-h] [-u USERNAME] [-p PASSWORD] [-g GOOD] [-c COUNT]
                     [-w WAIT] [-f] [-s]

Simulate to login Jing Dong, and buy sepecified good

optional arguments:
  -h, --help            show this help message and exit
  -u USERNAME, --username USERNAME
                        Jing Dong login user name
  -p PASSWORD, --password PASSWORD
                        Jing Dong login user password
  -g GOOD, --good GOOD  Jing Dong good ID
  -c COUNT, --count COUNT
                        The count to buy
  -w WAIT, --wait WAIT  Flush time interval, unit MS
  -f, --flush           Continue flash if good out of stock
  -s, --submit          Submit the order to Jing Dong

实例输出

+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Thu Mar 30 17:10:01 2017 > 请打开京东手机客户端,准备扫码登陆:
201 : 二维码未扫描 ,请扫描二维码
201 : 二维码未扫描 ,请扫描二维码
201 : 二维码未扫描 ,请扫描二维码
201 : 二维码未扫描 ,请扫描二维码
202 : 请手机客户端确认登录
200 : BADACIFYhf6fakfHvjiYTlwGzSp4EjFATN3Xw1ePR1hITtw0
登陆成功
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Thu Mar 30 17:10:28 2017 > 商品详情
编号:3133857
库存:现货
价格:6399.00
名称:Apple iPhone 7 Plus (A1661) 128G 黑色 移动联通电信4G手机
链接:http://cart.jd.com/gate.action?pid=3133857&pcount=1&ptype=1
商品已成功加入购物车!
购买数量:3133857 > 1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Thu Mar 30 17:10:30 2017 > 购物车明细
购买    数量    价格        总价        商品
 Y      1       6399.00     6399.00     Apple iPhone 7 Plus (A1661) 128G 黑色 移动联通电信4G手机
总数: 1
总额: 6399.00
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Thu Mar 30 17:10:30 2017 > 订单详情
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
...

代码仅供学习之用,京东网页不断变化,代码并不一定总是能正常运行。
如果您发现有Bug,Welcome to Pull Request.

jd-autobuy's People

Contributors

adyzng avatar zjhiphop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jd-autobuy's Issues

关于密码登录

刚刚看了一下京东的登录调用了 JSEncrypt 这个包进行加密密码,这个包运行的环境是浏览器环境来的,请问大伙还有其它方式通过密码登录京东吗?

能不能加入JD新的秒杀功能

京东秒杀订单确认网址已经变成了:
https://marathon.jd.com/seckill/seckill.action?skuId=xxxxx&num=1&rid=xxxxx

订单确认POST地址 也变成了:
https://marathon.jd.com/seckill/submitOrder.action?skuId="+skuId+"&vid="+vid

查了一下Jquery:在POST 上述URL是放了一堆收货地址信息:
var param = "orderParam.name="+consigneeName +"&orderParam.addressDetail="+consigneeAddressDetail +"&orderParam.mobile="+consigneeMobile+"&orderParam.email="+email+"&orderParam.provinceId="+provinceId +"&orderParam.cityId="+cityId+"&orderParam.countyId="+countyId+"&orderParam.townId="+townId +"&orderParam.paymentType="+paymentType+"&orderParam.password="+$("#txt_paypassword").val( +"&orderParam.invoiceTitle="+invoiceTitle+"&orderParam.invoiceContent="+invoiceContent+"&orderParam.invoiceCompanyName="+invoiceCompanyName+"&orderParam.invoiceTaxpayerNO="+invoiceTaxpayer+"&orderParam.usualAddressId="+usualAddressId +"&skuId="+skuId+"&num="+num+"&orderParam.provinceName="+provinceName +"&orderParam.cityName="+cityName+"&orderParam.countyName="+countyName+"&orderParam.townName="+townName
+"&orderParam.codTimeType="+codTimeType
+"&orderParam.mobileKey="+consigneeMobileKey+"&eid="+eid+"&fp="+fp;
var actionUrl = SECKILL_DOMAIN + "seckill/submitOrder.action?skuId="+skuId+"&vid="+vid;
jQuery.ajax( {
type : "POST",
dataType : "text",
url : actionUrl,
data : param,
cache : false,
success : ....
.......

能不能把代码加工一下,把这个秒杀的功能也加进去,我知道原理,但是不懂python具体逻辑

我在用golang 重写这个文件

'''
try:
self.browser = webdriver.PhantomJS('phantomjs.exe')
except Exception, e:
print 'Phantomjs initialize failed :', e
exit(1)
'''

这句被注释掉了,为什么在login_try中还在用brower 啊?我对python不熟,麻烦啦。

还有login_try中是想设置访问JD时伪装cookie吗??不是很明白。

抓包工具

你好,请问用的什么抓包工具,Fiddler 我试了好久,https 的无法抓取

不能提交订单,只能添加到购物车

登陆成功 │···················································
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ │···················································
Sun Mar 3 09:52:56 2019 > 商品详情 │···················································
编号:100002243969 │···················································
库存:现货 │···················································
价格:25.00 │···················································
名称:KOOLIFE 小米9手机壳 MI小米9手机套 磨砂硅胶软壳/全包外壳防摔壳 素乐系列-黑色 │···················································
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ │···················································
Sun Mar 3 09:52:56 2019 > 购买详情 │···················································
链接:http://cart.jd.com/gate.action?pid=100002243969&pcount=1&ptype=1 │···················································
结果:商品已成功加入购物车! │···················································
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ │···················································
Sun Mar 3 09:52:56 2019 > 购物车明细 │···················································
购买 数量 价格 总价 商品 │···················································

  •  1       25.00       25.00       KOOLIFE 小米9手机壳 MI小米9手机套 磨砂硅胶软壳/全包外壳防摔壳 素乐系列-黑色                                            │···················································
    

总数: 1 │···················································
总额: 25.00 │···················································
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ │···················································
Sun Mar 3 09:52:56 2019 > 订单详情 │···················································
应付款:¥33.00 │···················································
收货人:××× ×××****×××× │···················································
寄送至: XXXXXXXXXXXXXXXXXXXXXX │···················································
下单失败!<0: None>

如何下订单

我把商品加到购物车了,如何下订单?是用buy_good_count还是order_info

关于下单问题

请教一下,这个下单的时候只有第一次能看到下单的情况,但是网页上并没有下单的情况,而且后续都不会有下单的情况

商品数量设置无效

我修改了count的default数量大于1 但是下单结果都是1一件商品 测试商品编号为:1752931705 请问大家有这个问题吗

无法真正添加到购物车

你好,代码运行后台打印结果正常,

resp = self.sess.get(link, cookies = self.cookies)
soup = bs4.BeautifulSoup(resp.text, "html.parser")
这段代码能够正常解析到resp,打印出添加购物车成功,是检查购物车的时候发现实际并没有添加进去。
请问是什么原因啊?
requests.get(link) 我自己使用这个方法可以正常添加到购物车

一点异议

1,代码中checklogin判定不合理,这个这个接口无论是否登录成功均会返回70。
2,登录密码的处理,看博主代码是直接提交原始密码,这里不值是否合适。因为浏览器是提交的加密数据。
3,还有提交数据有点问题,直接getjd.com的返回数据,现在拿不到eid和fp,当然还有satoken这参数,代码里没有提现。可能跟京东调整有关。

最后,十分感谢博主提供的思路,相当优秀,赞👍

获取验证码的问题

获得的验证码永远都是KWHT之类的固定几个,看了GET的URL感觉没什么问题啊,不知道是哪里出了问题

不能正常登陆

用的是默认的二维码登陆, 添加到购物车脚本显示是成功的,但是实际没有添加, 然后到提交订单的时候返回的是登陆界面,而不是提交成功的json文件,导致错误. 所以应该是没有登录成功

抢购有时候需要输入验证码

京东的抢购,有时候会弹出需要输入验证码?
请问下这个能否解决?
获取验证码,跟二维码一样,然后自己输入验证码,抢购。

Exp order_info : No JSON object could be decoded

我用的是Ubuntu16.04lts系统,会报错
`chang@chang-Inspiron-5558:~/jd-autobuy$ python scraper-jd.py -g 43820201011 -c 1 -s
Namespace(area='1_72_2799_0', count=1, flush=False, good='43820201011', submit=True, wait=500)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mon May 20 16:37:05 2019 > 自动登录中...
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mon May 20 16:37:06 2019 > 商品详情
编号:43820201011
库存:现货
价格:449.00
名称:Under Armour 安德玛 UA男子 RUSH 强力伸缩型短袖上衣-1327644 黑色001 L
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mon May 20 16:37:08 2019 > 购买详情
链接:http://cart.jd.com/gate.action?pid=43820201011&pcount=1&ptype=1
结果:商品已成功加入购物车!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mon May 20 16:37:08 2019 > 购物车明细
购买 数量 价格 总价 商品

  •  1       449.00      449.00      Under Armour 安德玛 UA男子 RUSH 强力伸缩型短袖上衣-1327644 黑色001 L
    

总数: 1
总额: 449.00
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mon May 20 16:37:08 2019 > 订单详情
Exp order_info : No JSON object could be decoded
`
请问怎么解决啊?

购物车字符编码问题

实验了一下,可以查询库存,可以加入购物车 ,加入购物车后抛异常
Exp cart_detail : 'gbk' codec can't encode character u'\xa5' in position 16: illegal multibyte sequence

sh: start: command not found

$ python scraper-jd.py
Namespace(area='1_72_2799_0', count=1, flush=False, good='', submit=False, wait=500)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Wed Jun 28 14:12:28 2017 > 请打开京东手机客户端,准备扫码登陆:
sh: start: command not found
201 : 二维码未扫描 ,请扫描二维码
201 : 二维码未扫描 ,请扫描二维码

出不来二维码

下单失败

Mon Jan 15 21:44:17 2018 > 订单详情
Exp order_info : No JSON object could be decoded

ssl error CERTIFICATE_VERIFY_FAILED

Exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
刚让代码下载,运行还正常。今天又运行突然发现无法登陆了。 登陆是JD的大难提。求解决。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.