模拟用户登录脚本,手工输入验证码

今天某友人有个需求,希望能够登录到某网站,然后抓取一些资料回来。登录这里最麻烦的就是验证码,虽然这个网站验证码不复杂,但是看了下网上对于破解验证码的介绍,感觉还是挺麻烦的-_-!~。
我这个需求不需要每天定时跑,只要进去抓一次就好,于是乎采用人工输入验证码的方式。
先将验证码下载到本机,然后程序保持会话的情况下等待用户手工输入验证码,用户看完下载的验证码数字后,输入使脚本执行登录。

脚本代码如下,有兴趣的可以试试:
#!/usr/bin/env python
# encoding: utf-8
import urllib,urllib2,httplib,cookielib,os
IMGPATH = “”

#存验证码函数
def saveValidateCode(bin,path):
print path
f = open(path,”wb”)
f.write(bin)
f.close()

def main(codeurl,loginurl):
cookie=cookielib.CookieJar()
cj=urllib2.HTTPCookieProcessor(cookie)
request=urllib2.Request(codeurl)
opener=urllib2.build_opener(cj)
c = opener.open(request)
bincontent= c.read()
#存验证码为1.bmp
saveValidateCode(bincontent,IMGPATH.join([”1.bmp”]))
print “请输入验证码”
imgcode=raw_input()

usedata = {’user_name’:'用户名’,'password’:'密码’,'validatecode’:imgcode}#输入登录表单字段
loginrequest=urllib2.Request(loginurl)
c = opener.open(loginrequest,urllib.urlencode(usedata))#登录
bincontent = c.read()

if __name__ == ‘__main__’:
main(’验证码的url’,'登录提交地址’)

Tags:

One Response to “模拟用户登录脚本,手工输入验证码”

  1. 无聊空间 Says:

    这个很有用啊,python抓取看来还是很爽啊.

Leave a Reply