|
9754| 6
|
在Hikey开发板上用LED闪烁及蜂鸣器提醒论坛新回复(一) |

前言最近学习Python模拟登陆相关的东西,副产品就是样。 效果:定时登陆DFRobot并查询是否有人回复,有则led闪烁+蜂鸣器响。 硬件:Lemaker Hikey 开发板;LED module;Buzzer module;杜邦线若干。 软件环境:windows 7 x64;Archlinux|Raspbian;Python3;phantomjs;Fiddler;Chrome 1、基础知识 之前在我的inoreader订阅里读到这么一篇文章:手机APP自动签到—python实现,既往只用过Python+RPi.GPIO库去控制树莓派的引脚,现在发现了Python的其他有趣的应用如Web、神经网络、大数据之类,求知若渴。 通过上述文章,了解到Fiddler这款软件和requests库。断断续续学了很多,知乎、微信公众号上面一大堆,一直不得入门,这次突发奇想 说干就干,建议在此之前先阅读以下文章: 看不太懂没关系,大致有个概念就行。此外文中介绍的方法有些已经失效,但是看完作者的文章,再阅读作者的开源项目smart_login代码,相信会和我一样有茅塞顿开,醍醐灌顶之感。 一般来说:
2、 分析DFRobot网站登陆看完上述的文章,稍微上手之后,我们来看看df网站如何登陆的。使用fiddler抓包:
可以看到登陆过程中每次response都会改动cookies(安装Privacy scanner拓展可以看到),而且用chrome插件
登陆时post的数据如上,有两个值:loginhash和formhash,每次登陆都会变。hash值不可能凭空生成,有三种可能情况:1 是藏在页面中的;2 是通过服务器返回的;3 是通过运行javascript脚本生成的。我们通过chrome调试模式(F12)和搜索分析Fiddler会话之后认为该值是登陆时服务器返回的。
那么整个过程就比较清晰了: 难点: 解决思路:phantomjs模拟登陆+保存cookies。 以上方案都是基于dfrobot登陆需要验证码的前提下,所以最初是研究怎么获得登陆后的cookies,后来发现不需要验证码,但是沿用了这一思路。其实直接用requests库登陆理论上也是可以的(解决hash值,post的时候要对应qd)
3、开始动工——登陆我这里先以Windows下进行演示。开发环境配置包括以下步骤:
核心代码如下:
相关知识:
基本我踩过的坑都写在上面了。至此,我们使用python+selenium以及phantomjs获取了一次完整登陆的cookies文件。参考Selenium Webdriver传递Cookies给requests及持久化 ,requests库使用cookies的方法如下:
我们可以get一下home主页,看看服务器返回内容来确定cookies是否正确。 |
萌萌哒新人
活跃会员
宣传大使
版主限定
牛X认证
老版主限定
创作达人
小蘑菇
编辑选择奖
ARD DAY
编辑选择奖
摸鱼团员
编辑选择奖
志“童”道合
编辑选择奖
编辑选择奖
编辑选择奖
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed