- _nosay
自动登陆codecasts并签到脚本
2017-09-17 11:48:02
因为本人在codecasts的vip到期了,而codecasts网站中的视屏教程真心不错,只是费用有点小贵。
发现他们网站有一个功能,就是可以通过签到可以抵现这个活动,在运营方面,此活动屡见不鲜了,可以提高用度的粘性。具体活动规则如图所示。
而我当初学laravel的时候,此网站对我帮助很大,非常感谢此网站。但是我会员到期以后,考虑一下,还是暂时不续,想养一养,养肥了再续不迟。于是我决定连续签到99天以后再续,毕竟苍蝇再小也是肉啊。
但是让我连续签到99天,一天不断我认为很困难...所以我决定做一个自动化脚本每天去签到一下,并且把签到的结果发送email给我,但然期间有一定的概率发生网站改版,网站维护等等不可预知的情况,所以此脚本还要有预警的功能,并把预警短信发到我的手机中。
于是需要先分析一下目标网站,发现登陆界面并没有验证码,正合我意,这样就省得验证码打码接口的添加了,又省下不少成本。提交的字段为email,password,_token。于是相应的python脚本为
# -*- coding:utf-8 -*- import requests from lxml import html session_requests = requests.session() login_url = 'https://www.codecasts.com/user/login' result = session_requests.get(login_url) tree = html.fromstring(result.text) _token = list(set(tree.xpath("//input[@name='_token']/@value")))[0] payload = { '_token': _token, 'email': 'admin@muzilong.cn', 'password': '这是放密码的地方', } result = session_requests.post( login_url, data = payload, headers = dict(referer=login_url) )
这样登陆就完成了,然后看一下签到页面,发现签到这块应该已经组件化,并不存在表单类的东西,于是抓包看一下:
发现只是一个post请求,没有提交任何参数,于是我们照例拼装一个,下面是python脚本
url = 'https://www.codecasts.com/remarks' headers = { "User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36", "Accept": "application/json, text/plain, */*", "Accept-Encoding": "gzip, deflate", "Host": "www.codecasts.com", "X-CSRF-TOKEN": _token, "Upgrade-Insecure-Requests": "1", "Referer": url, } content = session_requests.post( url, headers = headers ) print content.text
运行了一下,成功得到了签到成功信息。