解决思路

  1. 用户通过转账码给支付宝账号转账。
  2. 转账之后提交转账 「流水号」给后台服务器
  3. 后台服务器模拟登录支付宝网页版,查找最近的订单
  4. 比较数据,成功则自动发货

支付宝账单的查询

一开始的思路是,通过 POST 数据登录支付宝 web 版。 后来尝试了一下,发现。支付宝关闭了 POST。 想要登录获取信息的话, 那么只剩下一条路了: 通过『 cookies 』登录

订单查询 v1:

手动登录支付宝 web 版本, 打开 chrome 开发工具,找到 cookies, 复制出来。

上述步骤很我们在 爬取螺纹钢数据 这篇文章里已经详细的描述过了, 我就不过多介绍了。

我就说一个将字符串快速转换为字典类型的技巧

# 将复制到 cookies 转换为字典,方便调用
raw_cookies = 'JSESSIONID=RZ13thOM1d   后面省略了,调式的话用自己的  '
cookie = SimpleCookie(raw_cookies)
cookies = {i.key: i.value for i in cookie.values()}

得到了 cookies,我们就能在登录状态下获取数据了。 主要用到的是: requests 模块的 session 下面就看看 v1 版本的整体代码吧 整体代码:

'''
尝试登录支付宝
并获账单记录
'''import requests
from http.cookies import SimpleCookie
from bs4 import BeautifulSoup# 自定义 headers
HEADERS = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36','Referer': 'https://consumeprod.alipay.com/record/advanced.htm','Host': 'consumeprod.alipay.com','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Connection': 'keep-alive'
}# 将复制到 cookies 转换为字典,方便调用
raw_cookies = 'JSESSIONID=RZ13thOM1dM5K05460101";     中间省略了     one=RZ250AATO/mr4CZ1cRnxgFmVR'
cookie = SimpleCookie(raw_cookies)
cookies = {i.key: i.value for i in cookie.values()}# 尝试使用面向对象的方式来造爬虫
class Alipay_Bill_Info(object):'''支付宝账单信息'''def __init__(self, headers, cookies):'''类的初始化headers:请求头cookies: 持久化访问info_list: 存储账单信息的列表'''self.headers = headersself.cookies = cookies# 利用 requests 库构造持久化请求self.session = requests.Session()# 将请求头和 cookies 添加到缓存之中self.session.headers = self.headersself.session.cookies.update(self.cookies)self.info_list = []def login_status(self):'''判断登录状态'''status = self.session.get('https://consumeprod.alipay.com/record/standard.htm', timeout=5, allow_redirects=False).status_codeprint(status)if status == 200:return Trueelse:return Falsedef get_data(self):'''利用 bs4 库解析 html并抓取数据,数据以字典格式保存在列表里'''status = self.login_status()url = 'https://consumeprod.alipay.com/record/standard.htm'if status:html = self.session.get(url).textsoup = BeautifulSoup(html, 'lxml')# 抓取前五个交易记录trades = soup.find_all('tr', class_='J-item ')[:5]for trade in trades:# 做一个 try except 避免异常中断try:# 分别找到账单的 时间 金额 以及流水号time = trade.find('p', class_='text-muted').text.strip()amount = trade.find('span', class_='amount-pay').text.strip()code = trade.find('a', class_='J-tradeNo-copy J-tradeNo')['title']self.info_list.append(dict(time=time, amount=amount, code=code))except:self.info_list.append({'error': '出现错误,请加站长支付宝好友获取充值码'})else:self.info_list.append({'error': '出现错误,请加站长支付宝好友获取充值码'})# 测试一下:
test = Alipay_Bill_Info(HEADERS, cookies)
test.get_data()print(test.info_list)'''
OUT:200
[{'time': '07:34', 'amount': '- 3.00', 'code': '2017081521001004100329637047'},{'time': '07:08', 'amount': '- 100.00', 'code': '2017081521001004100329622812'},{'time': '05:37', 'amount': '+ 0.14', 'code': '20170815344111650101'},{'time': '01:08', 'amount': '+ 10.00','code': '20170815200040011100040078948930'},{'time': '22:23', 'amount': '+ 10.00', 'code': '20170814200040011100060079678223'}]
'''

个人支付宝支付系统 ---- 获取账单信息相关推荐

  1. 利用『爬虫』 折衷解决 个人支付宝支付系统 --- 获取账单信息

    自动登录,无需扫码和输入用户名.密码* 测试地址:http://129.211.90.116:8814/findAllLog

  2. 支付宝 网页授权 获取用户信息

    ****** 支付宝 网页授权 获取用户信息(昵称,头像等)****** 最近有个项目 需要获取到支付宝的头像和昵称作为互动数据,作为php新人,对于看文档来说 很是痛苦,网上也没有很多关于支付宝网页 ...

  3. 支付宝应用授权获取会员信息

    支付宝应用授权获取会员信息 支付宝文档链接https://docs.open.alipay.com/284/106000/ 前提----------------------------------- ...

  4. 支付宝小程序获取用户信息及手机号

    支付宝小程序获取用户信息及手机号 众所周知,微信小程序是可以通过微信本身授权后再登录,平台可以拿到微信用的的账号相关信息,然后保存到数据库中,那么同理在支付宝小程序开发过程中,登录功能的设计也可以如此 ...

  5. JAVA 支付宝支付系统实战项目超详解

    结合支付宝官网实现的 支付宝当面支付功能,非常详细看我一篇就够了 1. 目的 2. 说明 3. 申请支付宝的账号(每个人都有做,不要用我的) 3.1. 扫码登陆 3.2. 账号的申请 3.3. 记录你 ...

  6. iOS 支付宝支付集成获取私钥

    为什么80%的码农都做不了架构师?>>>    http://doc.open.alipay.com/doc2/apiList?docType=4 登录到支付宝开放平台,下载相关支付 ...

  7. 支付宝 APP登录 获取用户信息 PHP

    支付宝APP登录服务端流程如下: 1.换取授权访问令牌 2.查询用户信息 APP调用sdk组装授权登录请求(系统交互流程),成功后,支付宝会返回 auth_code,利用此 auth_code 请求 ...

  8. c# 支付宝生活号 获取用户信息,不使用dome

    在蚂蚁开放平台注册申请应用上线 如果你只想看代码,直接跳至最后一步 申请过程就不多说了,申请完成后是 已上线 状态就ok了 下载支付宝开放平台开发助手,生成秘钥 点到生成密匙页面,根据自己需求选择密匙 ...

  9. H5网页使用支付宝授权登录获取用户信息详解

    用户信息授权 用户信息授权主要是为了获取支付宝用户ID(USER_ID).授权令牌(access_token),便于开发者处理自身业务逻辑的时候使用,例如:获取支付宝用户信息.发会员卡.快捷登录等.授 ...

最新文章

  1. 抓住「金九银十」的尾巴!技术面试如何准备,谷歌面试官亲授
  2. locust自己调试
  3. 一周一论文(翻译)——[Acta 1996] The Log-Structured Merge-Tree (LSM-Tree)
  4. C++中函数参数形式的总结
  5. 数据中心空调系统一种变风量节能控制策略
  6. 【Python基础】不服不行,Python 操作 JSON 的门道也这么多~
  7. Linux下oracle11g 导入导出操作详细
  8. 支持.NET的分布式缓存系统memcached
  9. jenkins解决jenkins内存溢出问题
  10. win2003无法进入桌面_电脑桌面怎么建立便签,可以在电脑桌面显示的便签
  11. 在Tomcat启动时直接创建servlet(二)
  12. skinmagic对VC中程序窗口的换肤
  13. catch(…) vs catch(CException *)?
  14. 白话搭建一个简单的微服系统
  15. 【Android】超级终端命令
  16. 洛谷1498-谢尔宾斯基三角形-python-(递归)
  17. iOS 在线下载字体
  18. SQL server 2000个人版 下载地址
  19. ksearch系统开发过程中遇到的KFC性能问题
  20. 奥城大学计算机专业,2013年美国留学硕士双录取院校一览

热门文章

  1. 1.7 ThreadLocal的原理和使用详解
  2. python 根据网易云歌曲的ID 直接下载歌曲
  3. 用计算机名搜不到共享打印机,win7电脑共享了打印机,但是别的电脑却搜不到。...
  4. 迁移学习——论文集推荐
  5. P3354 [IOI2005]Riv 河流
  6. 阿里云盘内测申请_阿里云网盘强势来袭,内测资格速速申请
  7. 手机安全领域的领航者
  8. 如何提高论文阅读速度?
  9. Python 字典(Dictionary. items()方法
  10. UPS不间断电源常见问题及解决办法