Skip to content

Instantly share code, notes, and snippets.

@Ansen
Created April 22, 2016 06:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ansen/1c04fb31d0c024f4399bf4c761ef4a3a to your computer and use it in GitHub Desktop.
Save Ansen/1c04fb31d0c024f4399bf4c761ef4a3a to your computer and use it in GitHub Desktop.
#!/usr/bin/python
# -*- coding : utf-8 -*-
from bs4 import BeautifulSoup
import requests
username = '' # your v2ex username
password = '' # your v2ex password
login_url = 'https://v2ex.com/signin'
home_page = 'https://www.v2ex.com'
mission_url = 'https://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
once_vaule = make_soup(login_url,'name','once')['value']
user_params = make_soup(login_url,'autofocus', 'autofocus')['name']
password_params = make_soup(login_url,'type', 'password')['name']
print(once_vaule)
post_info = {
user_params : username,
password_params : password,
'once' : once_vaule,
'next' : '/'
}
resp = v2ex_session.post(login_url, data=post_info,
headers=headers, verify=True)
short_url = make_soup(mission_url, 'class', 'super normal button')['onclick']
first_quote = short_url.find("'")
last_quote = short_url.find("'", first_quote+1)
final_url = home_page + short_url[first_quote+1:last_quote]
page = v2ex_session.get(final_url, headers=headers, verify=True).content
successful = make_soup(mission_url, 'class', 'fa fa-ok-sign')
if successful:
print ("Successful.")
else:
print ("Something wrong.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment