您的足迹:首页 > web开发 >v2ex签到脚本改进

v2ex签到脚本改进

修改版,实现v2ex的每日签到,原版脚本是别人的,忘了是找的谁的了。


前几日突然发现,好好的签到功能不能使用了,分析了下v2ex的源码,发现原来是网站登录的时候用户名和密码两个input的name改成自动生成的了,遂有了如下的代码:

#/usr/bin/python
# -*- coding : utf-8 -*-
from bs4 import BeautifulSoup
import requests
import os

username = 'xxx'   # your v2ex username
password = 'xxx'    # your v2ex password
login_url = 'https://v2ex.com/signin'
home_page = 'https://www.v2ex.com'
mission_url = 'http://www.v2ex.com/mission/daily'

UA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
headers = {
        "User-Agent" : UA,
        "Host" : "www.v2ex.com",
        "Referer" : "https://www.v2ex.com/signin",
        "Origin" : "https://www.v2ex.com"
        }

v2ex_session = requests.Session()

def make_soup(url,tag,name):
    page = v2ex_session.get(url,headers=headers,verify=True).text
    soup = BeautifulSoup(page)
    soup_result = soup.find(attrs = {tag:name})
    # print soup_result
    return soup_result

def getRespone(url):
    return v2ex_session.get(url,headers=headers,verify=True).text

def _soup(text, tag, name):
    soup = BeautifulSoup(text)
    soup_result = soup.find(attrs = {tag:name})
    # print soup_result
    return soup_result

def _soup_all(text, tag, name):
    soup = BeautifulSoup(text)
    soup_result = soup.find_all(attrs = {tag:name})
    # print soup_result
    return soup_result

# get login parameter once_value
response = getRespone(login_url)
once_value = _soup(response,'name','once')['value']
print once_value

# get login form' user and password name
formNames = _soup_all(response,'class','sl')
# print formNames
print formNames[0]['name']
print formNames[1]['name']

post_info = {
    formNames[0]['name'] : username,
    formNames[1]['name'] : password,
    'once' : once_value
}

resp = v2ex_session.post(login_url,data=post_info,headers=headers,verify=True)

# get final sign url
short_url = make_soup(mission_url, 'class', 'super normal button')["onclick"]
print short_url
# os._exit(0)

first_quote = short_url.find("'")
last_quote = short_url.find("'", first_quote+1) #str.find(str, beg=0 end=len(string))
final_url = home_page + short_url[first_quote+1:last_quote]
print(final_url)

# start sign
page = v2ex_session.get(final_url,headers=headers,verify=True).content

suceessful = make_soup(mission_url, 'class', 'fa fa-ok-sign')
if suceessful:
    print ("Sucessful.")
else:
    print ("Something wrong.")
本博客所有文章如无特别注明均为原创。作者:nevergreen复制或转载请以超链接形式注明转自
原文地址《v2ex签到脚本改进

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)