import requests
import re

# 一:先获取登陆页面,拿到authenticity_token:
# 1 请求的url:https://github.com/login
# 2 请求方法:GET
# 3 请求头:
#    User-Agent
r1 = requests.get('https://github.com/login',
                  headers={
                      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
                  },
                  )
authenticity_token = re.findall('name="authenticity_token".*?value="(.*?)"', r1.text, re.S)[0]
r1_cookies=r1.cookies.get_dict()
print(authenticity_token)
print(r1_cookies)
# 二:提交表单数据完成登陆
# 1 请求的url:https://github.com/session
# 2 请求方法:POST
# 3 请求头:
#    Referer:https://github.com/
#    User-Agent
# 4 请求体
# commit:Sign in
# utf8:✓
# authenticity_token:pFLyO9choCgUd6mm1AMP7BoeEQ613TRDe49MBREZ7EU7MKM7IELFgmyGfcKXS0hsaIiGJ8YlkTD5nwwV4tebig==
# login:xxxxxxx@qq.com
# password:xxxxxxx
r2 = requests.post('https://github.com/session',
                   headers={
                       "Referer": "https://github.com/",
                       'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
                   },
                   cookies=r1_cookies,
                   data={
                       "commit": "Sign in",
                       'utf8': "",
                       "authenticity_token": authenticity_token,
                       "login": "xxxxxx@qq.com",
                       "password": "xxxxxxxx",
                   },
                   allow_redirects=False
                   )

# print(r2.status_code)
# print(r2.history)

cookies=r2.cookies.get_dict()

r3=requests.get('https://github.com/settings/emails',
             headers={
                 "Referer": "https://github.com/",
                 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
             },
             cookies=cookies)
print('xxxxxxx@qq.com' in r3.text)     #返回true,测试成功