Cookies模拟登录GitHub

from lxml import etree
import requests
class Login(object):
    def __init__(self):
        self.headers={
            "Referer":"https://github.com/",
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
            "Host":"github.com"
        }
        self.login_url="https://github.com/login"
        self.post_url="https://github.com/session"
        self.logined_url="https://github.com/settings/profile"
        self.session=requests.Session()
    def token(self):
        response=self.session.get(self.login_url,headers=self.headers)
        selector=etree.HTML(response.text)
        token=selector.xpath("//div//input[2]/@value")[0]   #解析出登录所需的authenticity_token信息并返回
        return token
    def login(self,email,password):
        post_data={
            "commit":"Sign in",
            "utf8":"√",
            "authenticity_token":self.token(),
            "login":email,
            "password":password
        }
        response=self.session.post(self.post_url,data=post_data,headers=self.headers)
        if response.status_code==200:
            self.dynamics(response.text)
        response=self.session.get(self.logined_url,headers=self.headers)
        if response.status_code==200:
            self.profile(response.text)

    def dynamics(self,html):
        selector=etree.HTML(html)
        dynamics=selector.xpath('//div[contains(@class,"news")]//div[contains(@class,"alert")]')
        for item in dynamics:
            dynamic=" ".join(item.xpath('.//div[@class="title"]//text()')).strip()
            print(dynamic)

    def profile(self,html):
        selector=etree.HTML(html)
        name=selector.xpath('//input[@id="user_profile_name"]/@value')
        email=selector.xpath('//select[@id="user_profile_email"]/option[@value!=""]/text()')
        print(name,email)

if __name__=="__main__":
    login=Login()
    login.login(email="username",password="password")

猜你喜欢

转载自blog.csdn.net/qq_39905917/article/details/89362539