python 爬虫,关于验证码的问题。输入验证码才能搜索。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 爬虫,关于验证码的问题。输入验证码才能搜索。相关的知识,希望对你有一定的参考价值。
像图片里面那种,我输入验证码之后,页面上还存在验证码。我用爬虫取到的验证码总是错误(和图片是一样的),所以请问怎么解决?
#给你个例子参考 验证码请求一次就变了#!/usr/bin/python
#coding=utf-8
import requests
import urllib
import urllib2,hashlib,md5
from BeautifulSoup import BeautifulSoup
import cookielib
def _md5(password):
md5 = hashlib.md5()
md5.update(str.encode(password))
psw = md5.hexdigest()
return psw
url = 'https://passport.liepin.com/captcha/randomcode?2hy270c2ji1'
req = urllib2.Request(url)
res_data = urllib2.urlopen(req)
res = res_data.read()
output_file = open('1.jpg', 'wb')
output_file.writelines(res)
output_file.close()
verifycode = res_data.headers['Set-Cookie'].split(';')[0]
verifycode = verifycode.replace('verifycode=','')
filename = res_data.headers['Content-disposition'].split(';')[1].strip()
exec(filename)
cookiejar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
vidcode= raw_input(u"请输入验证码(在本路径 1.jpg): ")
data = 'user_login':"lovesword85@yeah.net",
'isMd5':"1",
'user_pwd':_md5('love123456'),
'verifycode':vidcode,
'url':""
url = 'https://passport.liepin.com/h/login.json'
data = urllib.urlencode(data)
headers = 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest', 'Cookie': 'verifycode=0;'.format(verifycode)
request = urllib2.Request(url,data,headers)
response = opener.open(request)
print '-------result-------------'
print response.read()
print '-------headers-------------'
print response.headers
print '-------cookies-------------'
for cookie in cookiejar:
print cookie 参考技术A 一直用的事618代理软件ip转换器
支持动态静态ip线路
不知道国内最好的是哪款,身边大多人都用618软件,评价挺好的 参考技术B post验证码,一般是需要带上cookie的追问
cookie都带上了,只要我右键查看源代码,点开验证码图片链接看过图片之后,再次输入这个验证码就会提示错误了。
追答那我就帮不上你了呢 亲 抱歉哈
python爬虫中图形验证码的处理
使用python爬虫自动登录时,遇到需要输入图形验证码的情况,一个比较简单的处理方法是使用打码平台识别验证码。
使用过两个打码平台,打码兔和若快,若快的价格更便宜,识别率相当。若快需要注册两个帐号:开发者帐号与用户帐号,用户帐号用于发送识别请求,开发者帐号可以注册软件id,并于识别请求进行绑定,可以参与识别收入的分成返现。
获取图形验证码目前发现的有两种方式:
0x01
在抓包中可以直接获得图片:发送get请求可以直接获取图片(png或jpg格式),这种情况可以使用request.get()返回值的content方法,获取图片文件,直接使用打码平台识别。
0x02
图片使用base64加密返回:
如上图,image中包含的就是经过base64加密后的图片文件。可以通过如下方式对图片进行还原:
resp = self.s.get(url, headers=header, verify=False, timeout=10) resp_json=json.loads(resp.text) CaptchaId=resp_json.get(‘CaptchaId‘) ImageStr=resp_json.get(‘Image‘) imgdata=base64.b64decode(ImageStr) file=open(‘captcha.gif‘),‘wb‘) file.write(imgdata) file.close()
图片格式不一定是gif,可能是jpg或png,如果写错了,结果无法打开,可以通过网上在线的图片解码网站验证一下图片格式。
以上是关于python 爬虫,关于验证码的问题。输入验证码才能搜索。的主要内容,如果未能解决你的问题,请参考以下文章