自动登陆codecasts并签到脚本

2017-09-17 11:48:02

    因为本人在codecasts的vip到期了,而codecasts网站中的视屏教程真心不错,只是费用有点小贵。

    发现他们网站有一个功能,就是可以通过签到可以抵现这个活动,在运营方面,此活动屡见不鲜了,可以提高用度的粘性。具体活动规则如图所示。

    image.png

    而我当初学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)
)

    这样登陆就完成了,然后看一下签到页面,发现签到这块应该已经组件化,并不存在表单类的东西,于是抓包看一下:

    image.png

    发现只是一个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

    运行了一下,成功得到了签到成功信息。

    image.png