Python爬虫抢购软件如何优化?
整体的抢购逻辑流程如下:
1.使用 selenium 模拟登陆拿到账号的 cookie 信息并保存
2.获取目标抢购角色的网页链接以及价格(发送生单请求时需要这两个参数)
3.完成生单之后进行支付,即发送支付请求
4.在进行支付请求时,需要拿到订单号,然而这里涉及到两个重定向,于是使用 allow_redirects=false,获取到正常的 cookie 进行下一步操作
5.在支付页面,需要发送支付请求,即输入密码后发送 post 请求,这里涉及到 md5+aes 加密,这里略过,js 是已经趴下来使用 pyexesjs 模拟,公钥是直接贴在支付页面的静态 html 里的,每次支付都会变化,所以已经没有步骤可以省略了
然后整个流程,在本机跑下来,大概是 1.8S ,其中生单 0.4S ,在浙江的服务器上,因为目标网站是搭在浙江的,ping 值理论是最小的,能够达到 1.0-1.3S 。但是这个速度根本无法抢购到目标角色,因为某宝已经能达到控制在 1S 以内,具体是多少 ms 不清楚。如下图
https://i.imgur.com/BTiutdQ.png
而我现在只能达到 1S+的速度 当然应该就是抢不到 虽然能够扣款成功 但是都会被退回
https://i.imgur.com/dms91fC.png
现在也不知道能有什么好的办法能够优化一下 加快速度了 确实也仔细看了 抓包下来 每个请求都仔细分析过 已经是没有可以省略的步骤了 但是为啥还是干不过某宝的那些人了 确实是很奇怪
Python爬虫抢购软件如何优化?
抢购的时候快就行了,难道支付也需要很快?
帖子没给具体代码,所以没法直接改。不过这类优化通常就几个方向。
核心是绕过或模拟前端限制。如果抢购有按钮倒计时,别用time.sleep等固定延迟,去监听页面DOM变化或者网络请求。用selenium的话,试试WebDriverWait配合expected_conditions,比死等强。
请求速度上,一个requests会话不够就上异步,aiohttp或者httpx都行,但别把人家网站打挂了。该带的请求头、Cookie、Referer一个都别少,有时候User-Agent不对就直接被拒了。
如果有验证码,简单图片验证码可以试试pytesseract,但复杂滑块或点选就得考虑接打码平台了,自己搞成功率低还耽误时间。
总结:核心思路是模拟真人操作并提速。
然鹅这个网站的规则是先付款的才可以抢购成功,生单成功之后只是为了拿到支付链接的 url,实际还是得看最终支付时间,我感觉和某宝差的也只是毫秒级上的,但是每次都干不过,都会在成功付款之后退回。
pyexecjs 其实挺慢的 这里优化空间挺大的
我这里使用的是 pyexecjs+node.js 来模拟生成加密后的密码报文的,由于加密数据是由 CryptoJS 加密的,重构成其他语言的代码不太现实 请问一下有什么好的方法推荐吗
直接拿 nodejs 写?
抢购什么的,这么变态,还有看付款时间的
这都抢不到? 也太变态了点
可能淘宝的那些都用 c 吧,或者你试试 go
一般的加密 PyCrypto 都可以解决,试试看
1 秒内的差距就是运气。多买几台不同节点的服务器。
selenium 实例化一个浏览器这么快吗 我电脑上都是 5s+
这种速度估计 python 就不行了
这种脚本一般是在家还是在服务器上跑的,会不会是家庭宽带延迟比较大。
我的和你差不多速度,3-5S 吧
换 pyppeteer 吧
是用 pyexecjs 来加载目标网站的 js 实现对密码的加密
刚刚进行了测试 实际上完成密码加密那一步用了 150ms 不知道如果使用其他方式会不会更快一点
经过 http://ping.chinaz.com/ 测试 目标网站在浙江节点下延迟最低 1-5ms 所以在进行抢购的时候买了一台杭州的 windows server 2008 顶配 按理说应该是延迟最低的情况下了
用 selenium 模拟登录只是为了拿 cookie,在抢购的时候提前几分钟拿到就行了,如果每次抢购都还去登录的话,耗时就更长了
这个模块还没用过 速度相较于 requests 会更快一点吗
确实是这样的 自己尝试了好几次都无法成功 以前其实也写过这种抢购软件的 但是是用来抢购那种用库存的 一般情况下都是能抢到的 但是这次这个是抢购单个角色 所以必须达到第一才能够抢到 某宝的技术团队应该是工作室之内的吧 各种大牛云集 干不过
老哥,你写的这个藏宝阁爬虫卖吗
看了下你的注册时间-- 你是看到我的帖子专门注册的账号吗? 其实脚本逻辑不难 GUI 那方面倒是花了不少功夫
是的看你帖子注册的,自己看中几只阴阳师的账号,无奈别人都是软件再抢,手动根本抢不到,emmm…
门外汉有点不知所措。。。望大佬指点迷津,或者出售给我
你可以留下你的联系方式~~~ 阴阳师那个我前两天才更新了 hhhhhh
VX 595434709
老哥,最近公司也要做个爬虫抢购,java 能开发嘛?之前没做过,求指教啊
当然可以开发了 理论上就是抓包分析写代码 python 能做的 java 当然也能做
主要是,抢购的话都是毫秒级别的差距,java 自身执行逻辑就比 py 慢一丢,不知道做出来可有 py 快啊,开发工期卡得紧
老哥,能留个联系方式,讨论下吗~
我的联系方式 vx 513893049
交流一下。。vx 18811447074
这楼主是一个搞外包的,大家不要给骗了,加了 QQ 以后一直在忽悠,没两句就开始装逼,然后要我搞外包.
技术问题一个都不回答,问什么都说很简单自己搞,要不然就找我外包,真是没见过这种人,一点想探讨的精神都没有,还跟我装起逼来,说多了就开始骂我菜鸡,菜鸟,真的是给点阳光就灿烂,懂一点就开始装逼,你爸妈没有教过你做人的道理吗?真是悲哀.
请问下楼主还在做吗?可以交流下,我也做出来差不多的,但是也是抢不到


