#模拟登录acfun
#导入第三方库
import requests
import pickle
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import re
from PIL import Image#提交表单获取cookie
def get_cookie_from_net():#d登录的urlurl = 'http://www.acfun.cn/login.aspx'#定义提交的表单数据#表单结构,可以通过自己的观察来设计payload={'username':'账号','password':'密码'}# 绕过SSL验证、#发送post请求data = s.post(url, headers=headers, data=payload, verify=True)#将请求道的cookie保存下来with open('cookies.acfun', 'wb') as f:cookiedict = requests.utils.dict_from_cookiejar(s.cookies)pickle.dump(cookiedict, f)print('提交表单登录,成功获取cookies..')return s.cookies# 从cookie文件获取cookie
def get_cookie_from_file():with open('cookies.acfun', 'rb') as f:cookiedict = pickle.load(f)cookies = requests.utils.cookiejar_from_dict(cookiedict)print('解析文件,成功提取cookie....')return cookies# 获取数据
def getData(html):soup = BeautifulSoup(html.text, 'html.parser')# print(soup)#异常处理try:#根据需要,可以在这个位置获取登录页面后的数据#和进行另外的操作mydata = soup.select('.desc')[0].get_text()except:#获取不到判断啧进行第二次登陆尝试#细心的话,可以进行递归判断,仿制死循环print('再次尝试登录')s.cookies = get_cookie_from_net()login_and_getdata()# 还可以继续处理其他数据return mydata#主要启动程序,查看是否已存在可以登录的cookie
#若存在,则直接登录
#不存在,则进行表单提交操作,获取cookie
def login_and_getdata():print('获取cookie')try:s.cookies = get_cookie_from_file()except:print('从文件获取cookie失败。。\n正在尝试提交表单登录以获取...')s.cookies = get_cookie_from_net()html = s.get('这里填写登陆后可以直接访问的地址', headers=headers)data = getData(html)print(data)if __name__ == "__main__":# 全局变量s = requests.session()ua = UserAgent()headers = {'User-Agent': ua.chrome}login_and_getdata()

上述是登录A站的,貌似A站没有设置多次重复登录之类的操作过于频繁的话,需要验证码操作。因此,找到了豆瓣的网站(我发现豆瓣和12306有的一拼,都是被拿来练手的)

下面上代码:(因为和上述的操作步骤区别不大,只是针对多次登录后会出现图片验证码的问题做文章,因此详细讲解这一步,使用了PIL第三方模块的Image)

import requests
import pickle
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import re
from PIL import Image# 提交表单获取cookie
def get_cookie_from_net():url = 'https://accounts.douban.com/login'#这一步需要先把豆瓣登录页面的数据获取到login_html = s.get(url, headers=headers).text#通过正则,获取image的地址verif_img_url = re.findall(r'<img id="captcha_image" src="(.*?)" alt="captcha"', login_html)[0]#获取图片的数据verif_img_data = s.get(verif_img_url, headers=headers).content#二进制写入下来with open('douban.jpg', 'wb') as f:f.write(verif_img_data)# 手动输入验证码#使用Image的open和_show方法,打开保存的图片img = Image.open('douban.jpg')Image._show(img)captha_img = str(input("输入验证码:"))# 云打码#网上也有云打码这方面的,需要和第三方平台做交互,这就不做演示了# print('利用云打码获取识别码。。。。')# captha_img = getcode_from_yundama()# 获取captcha-id#print(login_html)#当豆瓣登录页面出现验证码的时候,实有图片的id值的,只需要获取,然后拼接在登录表单里即可captha_id = re.findall(r'name="captcha-id" value="(.*?)"/>', login_html)[0]print('captcha_id:', captha_id)# 构建表单payload = {'source': 'None','redir': 'https://www.douban.com','form_email': '登录账号','form_password': '登录密码','login': '登录','captcha-solution': captha_img,'captcha-id': str(captha_id)}# 绕过SSL验证data = s.post(url, headers=headers, data=payload, verify=True)with open('cookies.douban', 'wb') as f:cookiedict = requests.utils.dict_from_cookiejar(s.cookies)pickle.dump(cookiedict, f)print('提交表单登录,成功获取cookies..')return s.cookies# 从cookie文件获取cookie
def get_cookie_from_file():with open('cookies.douban', 'rb') as f:cookiedict = pickle.load(f)cookies = requests.utils.cookiejar_from_dict(cookiedict)print('解析文件,成功提取cookie....')return cookies# 获取数据
def getData(html):soup = BeautifulSoup(html.text, 'html.parser')# print(soup)try:#这里只是获取了登陆成功页面的个人签名数据#若要获取更多,可以另行操作。都是基础操作mydata = soup.select('#display')[0].get_text()except:s.cookies = get_cookie_from_net()login_and_getdata()# 还可以继续处理其他数据return mydatadef login_and_getdata():print('获取cookie')try:s.cookies = get_cookie_from_file()except:print('从文件获取cookie失败。。\n正在尝试提交表单登录以获取...')s.cookies = get_cookie_from_net()html = s.get('https://www.douban.com/people/181618569/', headers=headers)data = getData(html)print(data)if __name__ == "__main__":# 全局变量s = requests.session()ua = UserAgent()headers = {'User-Agent': ua.chrome}# print(headers)login_and_getdata()

模拟动态登录,获取cookie和图片验证码登录(AcFun和豆瓣)相关推荐

  1. scrapy淘宝爬虫(通过模拟登录获取cookie)获取价格信息评论

    项目要求:爬取淘宝某领域下的商品名称,价格,评论. (我贼怂,如果阿里巴巴的朋友发现,请联系我,我立刻删帖,谢谢.) 一.构思流程 模拟登陆 获取cookie scrapy爬取数据 二.分步分析 (一 ...

  2. java模拟登录获取Cookie

    关于java模拟登录获取Cookie时经历的坑 springboot 引入jar包版本 通过httpclient来模拟登录 代码部分 表单提交部分代码(未测试正确与否,只是找了前辈们的东西过来) 总结 ...

  3. 自动识别图片验证码登录

    自动识别图片验证码登录 目标:从需要会有登录的网站抓取数据. 场景:A网站需要会员登录才能查阅信息,A网站采用了AntiForgery防止XSRF攻击. 创建windows应用,采用webBrowse ...

  4. python+appium自动化测试获取短信+图片验证码

    本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例) 获取短信验证码的方法有三种,如下所示: 在手机的通知栏中获取短信内容 通 ...

  5. python+appium自动化测试-获取短信+图片验证码

    本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例) 获取短信验证码的方法有三种,如下所示: 在手机的通知栏中获取短信内容 通 ...

  6. python用selenium 验证码图片_Python +Selenium解决图片验证码登录或注册问题(推荐)

    1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. ...

  7. python模拟登录获取Cookie

    在自动化处理过程中,有些操作往往需要登录之后才能进一步操作,所以我们需要通过登录获取到cookies信息,因为登录信息一般都是保存到cookies当中的,我们只需要在登录完成后把请求返回的cookie ...

  8. Selenium自动化测试:如何使用cookie跳过验证码登录

    对于一般的登录网站来说,都会有验证码这个东西,一般是为了安全考虑,处于某种安全策略,这就对我们做UI自动化测试的出了难题,正常我们可以输入用户名,密码进行登录,那如果弹出验证码该如何处理,取浏览器co ...

  9. WordPress登录注册评论滑动图片验证码插件腾讯云验证码(CAPTCHA)

    为了网站安全我们一般会在登录页.注册页.评论页添加验证码功能,传统的验证码都是输入字母数字或加减法等,现在比较流行图片滑动验证码.最为关键的是腾讯云提供有图形验证(图片滑动验证码)服务器(一年内提供几 ...

最新文章

  1. mongoose手动生成ObjectId
  2. 条件语句练习-比分预测
  3. python xlwt xlrd 写入一行_自己总结python用xlrd\xlwt读写excel
  4. maven 相关操作
  5. python怎么画简单图-Python | 用matplotlib画些简单的图
  6. 【渝粤教育】 广东开放大学 10331k2_行政管理学_21秋考试
  7. Java并发编程,AQS的(独占锁)重入锁(ReetrantLock)及其Condition实现原理
  8. TP5.1中的验证类 validate用法
  9. 单元格排序_Excel中这8种简单实用的排序方法,很多人都还不会用!
  10. Ubuntu14.04 64位 JAVA Eclipse ADT AndroidStudio 安装
  11. 【408考研计划】计算机组成原理
  12. c语言修改pdf文件内容,PDF怎么编辑修改?如何编辑PDF的内容?
  13. android 裁剪图片工具,十大最佳Android图像裁剪(裁剪小部件)库
  14. python界面编程实例_Python GUI编程 文本弹窗的实例
  15. 区块链开发如何选择底层平台和开发语言?
  16. 基于Multisim的红路灯电路设计
  17. JAVA操作ES中的BoolQueryBuilder 查询方法
  18. linux日志服务器审计客户端history记录
  19. 基本中型网络的仿真(RYU+Mininet的SDN架构)-以校园为例
  20. [数据仓库复习] 数据仓库架构

热门文章

  1. 【EMC电磁兼容】01.05——标准测试类目之EMI
  2. 识别植物的软件有哪些?快把这些软件收好
  3. RV32I 基本指令集汇编解析
  4. python统计套利_清华编程高手尹成带你基于算法实践python量化交易
  5. 汽车管理软件批发,汽车管理软件哪个靠谱?
  6. 【Python】伪距单点定位
  7. 我的世界服务器无法发送聊天信息,我的世界聊天框指令传送 | 手游网游页游攻略大全...
  8. 【微信小程序使用canvas绘制二维码】
  9. 极验验证码破解之selenium
  10. 旅游类App的原型制作分享