码迷,mamicode.com
首页 > 其他好文 > 详细

基于Requests和BeautifulSoup实现“自动登录”

时间:2018-05-11 23:30:13      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:gps   on()   adt   header   sid   ida   apt   usr   输入验证码   

基于Requests和BeautifulSoup实现“自动登录”实例

自动登录抽屉新热榜

技术分享图片
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests


# ############## 方式一 ##############
"""
# ## 1、首先登陆任何页面,获取cookie
i1 = requests.get(url="http://dig.chouti.com/help/service")
i1_cookies = i1.cookies.get_dict()

# ## 2、用户登陆,携带上一次的cookie,后台对cookie中的 gpsd 进行授权
i2 = requests.post(
    url="http://dig.chouti.com/login",
    data={
        ‘phone‘: "8615131255089",
        ‘password‘: "xxooxxoo",
        ‘oneMonth‘: ""
    },
    cookies=i1_cookies
)

# ## 3、点赞(只需要携带已经被授权的gpsd即可)
gpsd = i1_cookies[‘gpsd‘]
i3 = requests.post(
    url="http://dig.chouti.com/link/vote?linksId=8589523",
    cookies={‘gpsd‘: gpsd}
)

print(i3.text)
"""


# ############## 方式二 ##############
"""
import requests

session = requests.Session()
i1 = session.get(url="http://dig.chouti.com/help/service")
i2 = session.post(
    url="http://dig.chouti.com/login",
    data={
        ‘phone‘: "8615131255089",
        ‘password‘: "xxooxxoo",
        ‘oneMonth‘: ""
    }
)
i3 = session.post(
    url="http://dig.chouti.com/link/vote?linksId=8589523"
)
print(i3.text)

"""

抽屉新热榜
示例

自动登录GitHub

技术分享图片
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import requests
from bs4 import BeautifulSoup

# ############## 方式一 ##############
#
# # 1. 访问登陆页面,获取 authenticity_token
# i1 = requests.get(‘https://github.com/login‘)
# soup1 = BeautifulSoup(i1.text, features=‘lxml‘)
# tag = soup1.find(name=‘input‘, attrs={‘name‘: ‘authenticity_token‘})
# authenticity_token = tag.get(‘value‘)
# c1 = i1.cookies.get_dict()
# i1.close()
#
# # 1. 携带authenticity_token和用户名密码等信息,发送用户验证
# form_data = {
# "authenticity_token": authenticity_token,
#     "utf8": "",
#     "commit": "Sign in",
#     "login": "wupeiqi@live.com",
#     ‘password‘: ‘xxoo‘
# }
#
# i2 = requests.post(‘https://github.com/session‘, data=form_data, cookies=c1)
# c2 = i2.cookies.get_dict()
# c1.update(c2)
# i3 = requests.get(‘https://github.com/settings/repositories‘, cookies=c1)
#
# soup3 = BeautifulSoup(i3.text, features=‘lxml‘)
# list_group = soup3.find(name=‘div‘, class_=‘listgroup‘)
#
# from bs4.element import Tag
#
# for child in list_group.children:
#     if isinstance(child, Tag):
#         project_tag = child.find(name=‘a‘, class_=‘mr-1‘)
#         size_tag = child.find(name=‘small‘)
#         temp = "项目:%s(%s); 项目路径:%s" % (project_tag.get(‘href‘), size_tag.string, project_tag.string, )
#         print(temp)



# ############## 方式二 ##############
# session = requests.Session()
# # 1. 访问登陆页面,获取 authenticity_token
# i1 = session.get(‘https://github.com/login‘)
# soup1 = BeautifulSoup(i1.text, features=‘lxml‘)
# tag = soup1.find(name=‘input‘, attrs={‘name‘: ‘authenticity_token‘})
# authenticity_token = tag.get(‘value‘)
# c1 = i1.cookies.get_dict()
# i1.close()
#
# # 1. 携带authenticity_token和用户名密码等信息,发送用户验证
# form_data = {
#     "authenticity_token": authenticity_token,
#     "utf8": "",
#     "commit": "Sign in",
#     "login": "wupeiqi@live.com",
#     ‘password‘: ‘xxoo‘
# }
#
# i2 = session.post(‘https://github.com/session‘, data=form_data)
# c2 = i2.cookies.get_dict()
# c1.update(c2)
# i3 = session.get(‘https://github.com/settings/repositories‘)
#
# soup3 = BeautifulSoup(i3.text, features=‘lxml‘)
# list_group = soup3.find(name=‘div‘, class_=‘listgroup‘)
#
# from bs4.element import Tag
#
# for child in list_group.children:
#     if isinstance(child, Tag):
#         project_tag = child.find(name=‘a‘, class_=‘mr-1‘)
#         size_tag = child.find(name=‘small‘)
#         temp = "项目:%s(%s); 项目路径:%s" % (project_tag.get(‘href‘), size_tag.string, project_tag.string, )
#         print(temp)

github
示例

自动登录知乎

技术分享图片
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

import requests
from bs4 import BeautifulSoup

session = requests.Session()

i1 = session.get(
    url=https://www.zhihu.com/#signin,
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36,
    }
)

soup1 = BeautifulSoup(i1.text, lxml)
xsrf_tag = soup1.find(name=input, attrs={name: _xsrf})
xsrf = xsrf_tag.get(value)

current_time = time.time()
i2 = session.get(
    url=https://www.zhihu.com/captcha.gif,
    params={r: current_time, type: login},
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36,
    })

with open(zhihu.gif, wb) as f:
    f.write(i2.content)

captcha = input(请打开zhihu.gif文件,查看并输入验证码:)
form_data = {
    "_xsrf": xsrf,
    password: xxooxxoo,
    "captcha": captcha,
    email: 424662508@qq.com
}
i3 = session.post(
    url=https://www.zhihu.com/login/email,
    data=form_data,
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36,
    }
)

i4 = session.get(
    url=https://www.zhihu.com/settings/profile,
    headers={
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36,
    }
)

soup4 = BeautifulSoup(i4.text, lxml)
tag = soup4.find(id=rename-section)
nick_name = tag.find(span,class_=name).string
print(nick_name)

知乎
示例

自动登录博客园

技术分享图片
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
import json
import base64

import rsa
import requests


def js_encrypt(text):
    b64der = MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp0wHYbg/NOPO3nzMD3dndwS0MccuMeXCHgVlGOoYyFwLdS24Im2e7YyhB0wrUsyYf0/nhzCzBK8ZC9eCWqd0aHbdgOQT6CuFQBMjbyGYvlVYU2ZP7kG9Ft6YV6oc9ambuO7nPZh+bvXH0zDKfi02prknrScAKC0XhadTHT3Al0QIDAQAB
    der = base64.standard_b64decode(b64der)

    pk = rsa.PublicKey.load_pkcs1_openssl_der(der)
    v1 = rsa.encrypt(bytes(text, utf8), pk)
    value = base64.encodebytes(v1).replace(b\n, b‘‘)
    value = value.decode(utf8)

    return value


session = requests.Session()

i1 = session.get(https://passport.cnblogs.com/user/signin)
rep = re.compile("‘VerificationToken‘: ‘(.*)‘")
v = re.search(rep, i1.text)
verification_token = v.group(1)

form_data = {
    input1: js_encrypt(wptawy),
    input2: js_encrypt(asdfasdf),
    remember: False
}

i2 = session.post(url=https://passport.cnblogs.com/user/signin,
                  data=json.dumps(form_data),
                  headers={
                      Content-Type: application/json; charset=UTF-8,
                      X-Requested-With: XMLHttpRequest,
                      VerificationToken: verification_token}
                  )

i3 = session.get(url=https://i.cnblogs.com/EditDiary.aspx)

print(i3.text)

博客园
示例

 

基于Requests和BeautifulSoup实现“自动登录”

标签:gps   on()   adt   header   sid   ida   apt   usr   输入验证码   

原文地址:https://www.cnblogs.com/bigtreei/p/9026468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!