python3发放奖金_python3模拟v2ex登录并自动领取每日奖励

分析登录过程

分析登录过程

查看登录页面源代码

首先我们故意输错密码,查看登录需要发送的字段以及发送到的地址,可以发现用户名以及密码的字段其实是一大串随机字符,还有就是once字段是一个随机五位数字,所以我们需要在登录之前先去抓取登录页面获取到用户名密码字段名以及once随机数字

引入依赖

from urllib import request,parse

from bs4 import BeautifulSoup

import http.cookiejar

import re

import configparser

构建全局请求头

def build_opener():

cookie = http.cookiejar.CookieJar()

cookie_processor = request.HTTPCookieProcessor(cookie)

opener = request.build_opener(cookie_processor)

opener.addheaders = [("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0"),

("Referer", "http://cn.v2ex.com/signin"),

("Origin", "http://cn.v2ex.com"),

("Host", "cn.v2ex.com")]

request.install_opener(opener)

登录

def login():

login_data = configparser.ConfigParser()

login_data.read("user.ini") #将用户名密码放在user.ini配置文件

username = login_data.get("LoginInfo", "email")

password = login_data.get("LoginInfo", "password")

url = 'https://www.v2ex.com/signin'

req = request.Request(url)

res = request.urlopen(req)

html = res.read().decode('gbk','ignore') #获取到登录页的源代码并分析

soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')

inputs = soup.find_all('input')

# 构造登录参数

params = {

inputs[1]["name"]: username,

inputs[2]["name"]: password,

inputs[3]["name"]: inputs[3]["value"],

inputs[5]["name"]: inputs[5]["value"]

}

params = parse.urlencode(params).encode('utf-8')

req = request.Request(url,params,method="POST") #将构造好的登录参数发送到登录地址

res = request.urlopen(req)

领取奖励

def daily():

url = 'https://www.v2ex.com/mission/daily' #领取奖励地址

req = request.Request(url)

res = request.urlopen(req)

html = res.read().decode("utf-8")

soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8') #获取领取奖励页面的代码

inputs = soup.find_all('input')

daily_link = 'https://www.v2ex.com' + re.search("location.href = '(.*)';", inputs[1]['onclick']).group(1) #查找点击领取的地址

if daily_link == 'https://www.v2ex.com/balance':

print('您今天已经领取了!')

return False

req = request.Request(daily_link)

res = request.urlopen(req)

html = res.read().decode("utf-8")

soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')

print(soup.find('div',class_="message").text)

主函数

if __name__ == '__main__':

build_opener()

login()

daily()

实例预览

实例预览

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值