本文作者:青衫磊落

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

    1. ObjC的基础 2. ObjC2.0中的编译指令 3. ObjC Runtime 4. ObjC Object Model 5. ObjC的新语法 6. FQA 1. ObjC的基础 2. Ob ...

  2. c++ 博客资源

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  3. Hibernate中常见的异常处理

    本文引自:http://www.blogjava.net/sy1214520/archive/2008/10/21/235667.html 本文总结Hibernate中常见的异常. 1. net.sf ...

  4. 2018.10.12 bzoj4712: 洪水(树链剖分)

    传送门 树链剖分好题. 考虑分开维护重儿子和轻儿子的信息. 令f[i]f[i]f[i]表示iii为根子树的最优值,h[i]h[i]h[i]表示iii重儿子的最优值,g[i]g[i]g[i]表示iii所 ...

  5. 2018.09.16 bzoj3626: [LNOI2014]LCA(树链剖分)

    传送门 树链剖分好题. 对于每个点维护一个值vi" role="presentation" style="position: relative;"&g ...

  6. 2018.09.09 bzoj3505: [Cqoi2014]数三角形(容斥原理+简单计数)

    传送门 正难则反. 可以直接把问题转化成求出三点共线的情况数量. 如果同在一排或一列显然可以直接算,关键是如何求出斜着的. 我们知道,对于一个整点矩形. 如果长为x,宽为y,那么这个矩形任意一条对角线 ...

  7. 着重基础之—MySql 不能遗忘的索引操作

    着重基础之—MySql 不能遗忘的索引操作 关于MySql索引的基础知识我就不在这里写了,我不太想当信息的搬运工. 技巧分享:Workbench 作为一款专为MySQL设计的ER/数据库建模工具.除了 ...

  8. Part 4 - Authentication(14-16)

    from django.conf.urls import url from django.contrib import admin from django.contrib.auth import vi ...

  9. JPEG Camer 图片上传

    /* Linksprite */ #include <SoftwareSerial.h> #include <Ethernet.h> #include <SPI.h> ...

  10. js模态窗口返回值(table)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...