Python爬虫对于图片验证码自动识别的实现及模拟会话登陆!

一、图片验证码识别

验证码识别所使用的api为为快速图片识别平台,网页地址为http://fast.95man.com/auth/main.html,在这个平台中我们需要先依据用户名和密码获取到token

# 获取access_token
username = '746074xxx'
password = '746074xxxxxx'
acc_url = 'http://api.95man.com:8888/api/Http/UserTaken?user=' + str(username) + '&pwd=' + str(password) + '&isref=0'
response = requests.get(acc_url, headers=headers)
token = response.text[2:]

获取到token后可对图片验证码进行识别

# 识别验证码
img_orc_url = "http://api.95man.com:8888/api/Http/Recog?Taken=" + str(token) + "&imgtype=1&len=null"
orc_data = {
    'ImgBase64': img
}
response = requests.post(img_orc_url, headers=headers, data=orc_data)
verify = (response.text)[7:-2]

其中img变量是base64进行编码后的值,所得到的验证码的值即verify的值

# .content是把图片转化成二进制的方式
src_img = requests.get(src_img_path, headers=headers).content
with open("./src.jpg", 'wb') as fp:
    fp.write(src_img)
f = open("./src.jpg", "rb")
# 进行编码
img = base64.b64encode(f.read())

二、模拟登陆

# 登陆
# 仅仅测试,这里的url需要改变为登陆的url地址
login_url = "https://www.baidu.com"
data = {
    '__VIEWSTATE': 'dDwtMTM0OTIyMDA2Nzs7PpguLPJ2z3Assui2H2EuHO7sboJy',
    'txtUserName': '20160201996',
    'TextBox2': '746074xxx',
    'txtSecretCode': verify,
    'RadioButtonList1': '',
    'Button1': '',
    'lbLanguage': '',
    'hidPdrs': '',
    'hidsc': '',
}
# 这里开启会话后会一直携带cookie
# 开启会话
session = requests.Session()
# 设置会话的headers
session.headers = headers
login_response = session.post(url, data=data, timeout=500)

# 这里的意思是登录后再在登录页面继续进行其他操作,这样可以让服务器知道你是一家登录成功了的
# 登陆详细地址
detail_url = 'https://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}
detail_page = session.get(detail_url, headers=headers, timeout=500, allow_redirects=True)
print(detail_page.text)

你可能感兴趣的:(Python,python,cookie,jwt,crm,session)