用 Python 登錄 24 個主流網(wǎng)站
▍已完成的主流網(wǎng)站

▍模擬登錄GitHub
"""
github第二種登錄方式
info:
author:CriseLYJ
github:https://github.com/CriseLYJ/
update_time:2019-3-7
"""
import?re
import?requests
from?lxml?import?etree
class?Login(object):
class?GithubLogin(object):
????def?__init__(self,?email,?password):
????????#?初始化信息
????????self.headers?=?{
????????????'User-Agent':?'Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_2)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/71.0.3578.98?Safari/537.36',
????????????'Referer':?'https://github.com/',
????????????'Host':?'github.com'
????????}
????????self.session?=?requests.Session()
????????self.login_url?=?'https://github.com/login'
????????self.post_url?=?'https://github.com/session'
????????self.session?=?requests.Session()
????????self.email?=?email
????????self.password?=?password
????#?模擬登錄
????def?login_GitHub(self):
????????#?登錄入口
????????post_data?=?{
????????????'commit':?'Sign?in',
????????????'utf8':?'?',
????????????'authenticity_token':?self.get_token(),
????????????'login':?self.email,
????????????'password':?self.password
????????}
????????resp?=?self.session.post(
????????????self.post_url,?data=post_data,?headers=self.headers)
????????print('StatusCode:',?resp.status_code)
????????if?resp.status_code?!=?200:
????????????print('Login?Fail')
????????match?=?re.search(r'"user-login"?content="(.*?)"',?resp.text)
????????user_name?=?match.group(1)
????????print('UserName:',?user_name)
????????response?=?self.session.post(self.post_url,?data=post_data,?headers=self.headers)
????????print(response.status_code)
????????print(post_data)
????????if?response.status_code?==?200:
????????????print("登錄成功!")
????????else:
????????????print("登錄失敗!")
????#?獲取token信息
????#?Get?login?token
????def?get_token(self):
????????response?=?self.session.get(self.login_url,?headers=self.headers)
????????html?=?etree.HTML(response.content.decode())
????????token?=?html.xpath('//input[@name="authenticity_token"]/@value')[0]
????????return?token
????????if?response.status_code?!=?200:
????????????print('Get?token?fail')
????????????return?None
????????match?=?re.search(
????????????r'name="authenticity_token"?value="(.*?)"',?response.text)
????????if?not?match:
????????????print('Get?Token?Fail')
????????????return?None
????????return?match.group(1)
if?__name__?==?'__main__':
????email?=?input('請輸入您的賬號:?')
????password?=?input('請輸入您的密碼:?')
????email?=?input('Account:')
????password?=?input('Password:')
????login?=?Login(email,?password)
????login?=?GithubLogin(email,?password)
????login.login_GitHub()
▼點擊成為社區(qū)會員? ?喜歡就點個在看吧
評論
圖片
表情

