[TOC]
Python模擬Github登陸沟娱,詳情請(qǐng)查看源碼點(diǎn)鏈接進(jìn)入Python-Spiders文集,模擬Github登陸可以分為五個(gè)操作步驟堪置,步驟如下:
- 模擬Github登陸步驟:
1、請(qǐng)求頭:self.headers,請(qǐng)求url剖毯;
2、設(shè)置session教馆,保存登陸信息cookies逊谋,生成github_cookie文件;
3土铺、POST表單提交胶滋,請(qǐng)求數(shù)據(jù)格式post_data;
4悲敷、authenticity_token獲染啃簟;
5后德、在個(gè)人中心驗(yàn)證判斷是否登陸成功部宿,輸出個(gè)人中心信息即登陸成功。
一瓢湃、獲取請(qǐng)求頭
① 在瀏覽器中敲入https://github.com/login
理张,同時(shí)右擊頁面查看檢查,如下圖所示:
Python模擬Github登陸
② 點(diǎn)擊紅框內(nèi)login進(jìn)入如下圖所示:
Python模擬Github登陸
③ 源碼中對(duì)應(yīng)部分:
# 設(shè)置請(qǐng)求頭
self.headers = {
'Referer': 'https://github.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Host': 'github.com'
}
二绵患、保存登陸信息cookies
① 設(shè)置session
② 保存登陸信息cookies雾叭,生成github_cookie文件,用cookies保存的信息加載個(gè)人設(shè)置落蝙,驗(yàn)證是否模擬登錄成功
③ 源碼中對(duì)應(yīng)部分:
# 設(shè)置session
self.session = requests.session()
# 生成github_cookie文件
self.session.cookies = cookielib.LWPCookieJar(filename='github_cookie')
三织狐、POST表單提交
① POST表單提交字段獲取,如下圖所示:
Python模擬Github登陸
② 源碼中對(duì)應(yīng)部分:
#登陸時(shí)表單提交參數(shù)
Form Data:
commit:Sign in
utf8:?
authenticity_token:yyZprIm4aghZ0u7r25ymZjisfTjGdUAdDowD9fKHM0oUvHD1WjUHbn2sW0Cz1VglZWdGno543jod2M8+jwLv6w==
login:*****
password:******
四筏勒、authenticity_token獲取
① 在瀏覽器中敲入https://github.com/login移迫,獲取網(wǎng)頁文本文件
② 源碼中對(duì)應(yīng)部分:
# 獲取authenticity_token
def get_token(self):
response = self.session.get(self.loginUrl, headers=self.headers)
html = etree.HTML(response.text)
authenticity_token = html.xpath('//div/input[2]/@value')
print(authenticity_token)
return authenticity_token
五、在個(gè)人中心驗(yàn)證判斷是否登陸成功
在個(gè)人中心驗(yàn)證判斷是否登陸成功奏寨,輸出個(gè)人中心信息即登陸成功起意,如下圖:
Python模擬Github登陸
即模擬GitHub模擬登陸成功。
六病瞳、使用QQ郵箱發(fā)送郵件提醒
這里用到了Python的兩個(gè)包來發(fā)送郵件: smtplib 和 email 揽咕。
Python 的 email 模塊里包含了許多實(shí)用的郵件格式設(shè)置函數(shù)悲酷,可以用來創(chuàng)建郵件“包裹”。使用的 MIMEText 對(duì)象亲善,為底層的 MIME(Multipurpose InternetMailExtensions设易,多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型)協(xié)議傳輸創(chuàng)建了一封空郵件,最后通過高層的SMTP 協(xié)議發(fā)送出去蛹头。 MIMEText 對(duì)象 msg 包括收發(fā)郵箱地址顿肺、郵件正文和主題,Python 通過它就可以創(chuàng)建一封格式正確的郵件渣蜗。smtplib 模塊用來設(shè)置服務(wù)器連接的相關(guān)信息屠尊。
要想通過QQ郵箱來發(fā)送郵件,需要開啟QQ郵箱的設(shè)置-賬戶里SMTP服務(wù)耕拷,接下來會(huì)通過發(fā)送短信驗(yàn)證來獲得授權(quán)碼讼昆,有了授權(quán)碼后就可以在代碼里添加了。
我新建了一個(gè)senemil.py文件用于測(cè)試
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-05-07 19:55:30
# @Author : HannochTao (hannochtao@163.com)
# @Link : http://www.imstudy.online
# @Version : $Id$
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_mail():
msg_from='790152894@qq.com' #發(fā)送方郵箱
passwd='meeyzbaeowtbbdgf' # 口令,QQ郵箱是輸入授權(quán)碼骚烧,在qq郵箱設(shè)置 里用驗(yàn)證過的手機(jī)發(fā)送短信獲得浸赫,不含空格
msg_to='hannochtao@163.com' #收件人郵箱
subject="python郵件測(cè)試" #主題
content='''這是我使用python smtplib及email模塊發(fā)送的郵件'''
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = msg_from
msg['To'] = msg_to
try:
s = smtplib.SMTP_SSL("smtp.qq.com",465)
s.login(msg_from, passwd)
s.sendmail(msg_from, msg_to, msg.as_string())
print ("發(fā)送成功")
except Exception as e:
print ("Error: 無法發(fā)送郵件")
print(e)
if __name__ == '__main__':
send_mail()
#meil()
網(wǎng)易郵箱接受到了QQ郵箱發(fā)送的郵件,如下圖:
整合了全部代碼之后赃绊。