本文作者:青衫磊落

最近看到个特别全面源码分享网站,刚好有个项目是一直想做但是没有头绪的,就想下载学习一下。注册账号后,发现还需要若干金币。后来发现可以通过每隔一定时间发心情状态来获得金币,就打算写一个自动发心情状态的python脚本来收割金币。

思路分析

使用burp抓取一下提交的包,如下图所示:

因此我们的目的是写一个自动提交心情的python脚本,提交包中需要包含必要的cookie信息,隐藏的radom字符串,心情文本内容,和文件,经测试发现文件可为空。表单中只包含前两项就可以成功增加金币,这就更加省事了。
文末附有完整python代码,接下来我们看一下是怎么一步步写出来的。

具体实现

第一步

首先先写读取页面的功能!这个之前也写过很多,都是搜索出一段代码来直接使用。然而这次找了几段代码代码应为python及库的版本问题都不太好调试。
就直接看requests库官方文档,官方文档才是最好的资料。
版本1代码

#coding:utf-8  
import requests
url_home = "http://www.home.com/"
r = requests.get(url_home)
print(r.text)

此时获得的页面是未曾登陆的无法发表心情状态。

第二步

版本2代码:

#coding:utf-8  
import requests
cookies = dict(zdmid="93EB84AE485E7B7E365C4F87691F8A9D")
url_home = "http://www.home.com/"
r = requests.get(url_home,cookies=cookies)
print(r.text)

第三步

接下来我们提取需要提交表单的隐藏input随机字符串,同时选择当前首页的其他人的心情状态作为我们的文本内容。
解析html,当然是神库beautifulSoup4了,别无他想。分析需要提取的值在html页面的具体位置,查看官方文档选择合适的api方法,然后编写代码实现。

#coding:utf-8  
import requests
from bs4 import BeautifulSoup cookies = dict(zdmid="451178ECCF2145D24F94DE0A1DF7D658")
url_home = "http://www.home.com/"
r = requests.get(url_home, cookies=cookies)
soup = BeautifulSoup(r.text, 'html.parser')
random = soup.form.input.attrs["value"]
content = soup.select_one(".content").contents[0] print(random)
print(content)

第四步骤

接下来我们来实现提交心情状态功能。
只需要将上一步骤提取的内容构造post提交就可以了。

版本4代码

#coding:utf-8  
import requests
from bs4 import BeautifulSoup cookies = dict(zdmid="451178ECCF2145D24F94DE0A1DF7D658")
url_home = "http://www.home.com/"
r = requests.get(url_home, cookies=cookies)
soup = BeautifulSoup(r.text, 'html.parser')
random = soup.form.input.attrs["value"]
content = soup.select_one(".content").contents[0] mood_create = 'http://www.mood/create.htm'
payload = {'radom': radom, 'content': content}
requests.post(mood_create, cookies=cookies, data=payload)

第五步

因此可以使用session来改造代码,requests中的session将会自动保存相关的cookie信息,如此每次运行就可以自动使用账号及密码登陆。
版本5代码

   #coding:utf-8  
    import requests
    from bs4 import BeautifulSoup     s = requests.Session()
    url_home = "http://www.home.com/"
    s.get(url_home)     url_login = "http://www.login.htm"
    data_login = {'account':'username','password':'passwd','rememberme':'on'}
    text = s.post(url_login,data=data_login)     r = s.get(url_home)
    soup = BeautifulSoup(r.text, 'html.parser')
    random = soup.form.input.attrs["value"]
    content = soup.select_one(".content").contents[0]     mood_create = 'http://www.moodcreate.htm'
    payload = {'radom': radom, 'content': content}
    s.post(mood_create, cookies=cookies, data=payload)

第六步

上面的步骤完成后,我们可以执行一次自动提交心情状态的代码。我们想要做的每隔一定的时间间隔提交一条状态。因此还要添加上一个定时器,来自动执行这个过程。
最终完整代码如下,justForFun

    #coding:utf-8
    import threading
    import requests
    import random
    from bs4 import BeautifulSoup
    url_login = "http://www.login.htm"
    url_home = "http://www.home.com/"
    mood_create = "http://www.mood/create.htm"     s = requests.Session()     def create():
        global timer
        global s
        s.get(url_home)
        data_login = {'account':'username','password':'passwd','rememberme':'on'}
        text = s.post(url_login,data=data_login)
        res = s.get(url_home)
        soup = BeautifulSoup(r.text, 'html.parser')
        random = soup.form.input.attrs["value"]
        content = soup.select_one(".content").contents[0]
        payload = {'radom': random, 'content': content}
        s.post(mood_create, cookies=cookies, data=payload)         timer = threading.Timer(5*60*60, create)
        timer.start()     timer = threading.Timer(1, create)   
    timer.start()

>>>>>>  黑客入门必备技能  带你入坑和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩~

【python入门】之教你编写自动获取金币脚本的更多相关文章

  1. [swift实战入门]手把手教你编写2048(一)

    苹果设备越来越普及,拿着个手机就想捣鼓点啥,于是乎就有了这个系列,会一步一步教大家学习swift编程,学会自己做一个自己的app,github地址:https://github.com/scarlet ...

  2. Windows 自动获取IP脚本

    @echo off echo 正在自动获取IP地址.... set 连接名称=以太网 netsh interface ip set address name = "%连接名称%" ...

  3. 25 【python入门指南】如何编写测试代码

    python如何编写测试代码 python内置了unittest,使得写应用层的单元测试变得超乎寻常的简单. 1,执行单个测试函数 #!/bin/python import unittest clas ...

  4. python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客

    python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客 undefined Python多线程抓取代理服务器 | Linux运维笔记 undefined java如 ...

  5. Python 之自动获取公网IP

    Python 之自动获取公网IP 2017年9月30日 文档下载:https://wenku.baidu.com/view/ff40aef7f021dd36a32d7375a417866fb84ac0 ...

  6. python入门(5)使用文件编辑器编写代码并保存执行

    python入门(5)使用文件编辑器编写代码并保存执行 两款文本编辑器: 一个是Sublime Text,免费使用,但是不付费会弹出提示框: 一个是Notepad++,免费使用,有中文界面: 请注意, ...

  7. Appium自动获取 Android 设备 id 和包名等信息(python)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhusongziye/article/d ...

  8. Python 线程,with的作用(自动获取和释放锁Lock)

    Python 线程,with的作用(自动获取和释放锁Lock) import threading import time num= #全局变量多个线程可以读写,传递数据 mutex=threading ...

  9. python 自动获取星期

    自动获取星期: >>> from time import time,localtime,strftime>>> x=localtime(time())>> ...

随机推荐

  1. ubuntu查找命令比较

    1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.    find的使用格式如下:     $ find <指定目录> <指定条件> < ...

  2. jsp传中文乱码问题 encodeURIComponent()编码方法

    方法一: jQuery.ajax({            type:"POST",            url:"${ctx}/offer.do",     ...

  3. Phantomjs 生成多页PDF

    开篇 最近使用 Phantomjs 生成PDF,其中遇到一些问题,导致PDF生成失败,如出现空白文件或一页数据量太大,都是由于没有设置好格式导致.特别是分页问题,感觉资料很少,除了在 StackOve ...

  4. Linux shell脚本的字符串截取

    http://blog.csdn.net/gumanren/article/details/5601544 Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.ha ...

  5. 2018.09.28 hdu5435A serious math problem(数位dp)

    传送门 数位dp卡常题. 写了一发dfs版本的发现过不了233. 于是赶紧转循环版本. 预处理出f数组. f[i][j]f[i][j]f[i][j]表示前i位数异或和为j的方案数. 然后每次直接数位d ...

  6. 2018.09.14 codechef Milestone(随机化算法)

    传送门 由于存在不超过7条直线可以覆盖超过所有的点. 所以如果我们随机选点的话(每次随机两个) 那么得到的解恰好为最优解的概率是149" role="presentation&qu ...

  7. 14)settings.xml

    1. User Level. ${user.home}/.m2/settings.xml 2. Global Level. ${maven.home}/conf/settings.xml <se ...

  8. 整理iOS9适配中出现的坑

    一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就是App发请求的时候弹出网络无法连 ...

  9. Paper格式-国际会议版

    Paper Title 论文题目 Authors Name/s per 1st Affiliation (Author) 作者名字/s 每第一作者 line 1 (of Affiliation): d ...

  10. (最大上升子序列) Super Jumping! Jumping! Jumping! -- hdu -- 1087

    http://acm.hdu.edu.cn/showproblem.php?pid=1087   Super Jumping! Jumping! Jumping! Time Limit:1000MS  ...