精华内容
下载资源
问答
  • Python爬虫绕过登录的小技巧

    千次阅读 2019-05-15 08:48:58
    文字和图形验证码还加了干扰线,本文就来讲讲怎么绕过登录页面。 登录页面的验证,比如以下的图形验证码。 还有我们基本都看的 12306 的图形验证码。 绕过登录方法 绕过登录基本有两种方...

    前言

    很多时候我们做 Python 爬虫时或者自动化测试时需要用到 selenium 库,我们经常会卡在登录的时候,登录验证码是最头疼的事情,特别是如今的文字验证码和图形验证码。文字和图形验证码还加了干扰线,本文就来讲讲怎么绕过登录页面。

    登录页面的验证,比如以下的图形验证码。

    还有我们基本都看过的 12306 的图形验证码。

     

     

    绕过登录方法

     

    绕过登录基本有两种方法,第一种方法是登录后查看网站的 cookie,请求 url 的时候把 cookie 带上,第二种方法是启动浏览器带上浏览器的全部信息,包括添加的书签和访问网页的 cookie 信息。

    第一种 cookie 方法我们要分析别人网站的 cookie 值,找出相应的值然后添加进去,对于我们不熟的网站,他们可能也会做加密或者动态处理,所以有些网站也不是那么好操作。如果是自己公司的网站需要测试,我们可以询问对应的开发那个 cookie 值是区分独立用的值,拿出来放在请求里面就行。

     

    添加 cookie 绕过登录

    比如我们登录百度账号比较费劲,每次都需要登录也比较繁琐,我们 F12 打开页面调试工具,登录后找到 www.baidu.com 文件,在 cookie 中,我们发现很多值,其中图中圈起来的就是我们要找的值。

    我们在访问 baidu 链接的时候加上这个 cookie 值,这样就是直接登录后的百度账号了。

     

     

    下载浏览器驱动

     

    我们要 selenium 启动浏览器时,需要下载后对应的驱动文件并放在 Python 安装的根目录下,比如我会用到谷歌 Chrome 浏览器和 Firefox 火狐浏览器。

    谷歌浏览器驱动下载地址:

    http://chromedriver.storage.googleapis.com/index.html
    

    火狐浏览器驱动下载地址:

    https://github.com/mozilla/geckodriver/releases/

     

    启动 Chrome 浏览器绕过登录

     

    我们每次打开浏览器做相应操作时,对应的缓存和 cookie 会保存到浏览器默认的路径下,我们先查看个人资料路径,以 chrome 为例,我们在地址栏输入 chrome://version/

     

    图中的个人资料路径就是我们需要的,我们去掉后面的 \Default,然后在路径前加上「–user-data-dir=」就拼接出我们要的路径了。

    profile_directory = r'--user-data-dir=C:\Users\xxx\AppData\Local\Google\Chrome\User Data'
    

    接下来,我们启动浏览器的时候采用带选项时的启动,这种方式启动浏览器需要注意,运行代码前需要关闭所有的正在运行 chrome 程序,不然会报错。全部代码如下。

    selenium 自动化启动浏览器后我们会发现我之前保存的书签完整在浏览器上方,baidu 账号也是登录的状态。

    启动 Firfox 浏览器绕过登录

    Firfox 火狐浏览也可以这样启动它,设置略有不同。

    首先,查看配置文件的存储路径,查看方法:帮助–故障排除信息–配置文件夹,把里面的路径复制过来就行。

     

    同样,我们把路径放在变量中。

    profile_path = <span class="hljs-string">r'C:\Users\guixianyang\AppData\Roaming\Mozilla\Firefox\Profiles\dvm6wqam.default'</span>
    

    我们也在火狐浏览器中登录好百度的账号,用 selenium 自动化启动带配置文件的火狐浏览器,也会发现启动时已经启动了浏览器安装的插件和登录好的百度账号。

     

    绕过图形验证码的网站

     

    文中第一个图是简书登录时的图形验证码,我们登录简书后(cookie 有一定的时效,貌似有 10 天半个月左右),把上面代码中的链接换成简书的,再用上面的方法觉可以实现绕过登录页的图形验证码。

    比如我直接打开我的简书个人主页

    https://www.jianshu.com/u/52353ffa8b86
    

    自动化启动后也是保留了登录的状态。

    网站的登录大门已被打开,接下来就可以做自己想做的事情了,比如爬虫、自动化测试验证之类的。

    PS:以上技巧对有些网站可能不管用,但是对大部分网站还有适用的,觉得本文小技巧有用的自己赶紧试试吧。

    展开全文
  • selenium-跳过登录验证码

    万次阅读 2018-07-28 20:37:24
    3.跳验证码直接登录成功。 4.验证码识别技术。 第三条写的很模糊,不过下面就介绍一下第三条的实现方法。 先说一下实现思路: 1.打开要测试的网页,获取登录前的cookie(可以抓包获取,可以代码实现,下...

    selenium最常见的就是登录,但是登录有个坑,就是验证码的问题,关于验证码一共四个办法:

    1.让开发注释掉验证码。

    2.让开发设置一个万能验证码,只要输入这个验证码,就通过。

    3.跳过验证码直接登录成功。

    4.验证码识别技术。

    第三条写的很模糊,不过下面就介绍一下第三条的实现方法。

    先说一下实现思路:

    1.打开要测试的网页,获取登录前的cookie(可以抓包获取,可以代码实现,下面会附上代码)。

    2.手动登录,再获取登录后的cookie。

    3.对比两次获取的cookie,找出登录后多出来的cookie,只要多出来的name和value就行(一般name就是token)。

    4.在代码里加上写入cookie,把找出来的name和value写入。然后再写一遍打开网页的代码。

    下面放上代码(不要着急复制代码为自己所用,代码后面会写限制,有些登录用这代码也跳不过去,哈哈)。

    #coding=utf-8
    from selenium import webdriver
    import time
    #下面四行这么写是去掉谷歌浏览器上面提示的,第二行和第三行分别对应不同的提示
    options = webdriver.ChromeOptions()
    options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
    # options.add_argument('disable-infobars')
    browser = webdriver.Chrome(chrome_options=options)
    #
    browser.maximize_window()
    #打开火狐浏览器
    # browser=webdriver.Firefox()
    #输入网址
    browser.get("https://m.flycua.com/h5/#/")
    #点击登录,用下面注释的代码获取cookie,实现跳过登录,执行脚本的时候就不用这部分了
    # browser.find_element_by_id("su").click()
    # cookie1= browser.get_cookies()
    #打印登录前的cookie
    # print (cookie1)
    #等待30秒,用这30秒时间完成登录操作
    # time.sleep(30)
    #获取登录后的cookie
    # cookie2= browser.get_cookies()
    #打印登录后的cookie
    # print (cookie2)
    #
    #加入要获取的cookie,写进去
    browser.add_cookie({'name':'tokenId', 'value':'8BB8FDD4FBB31F92424A7E0EBE872E01A4AF77654043DAD638E9F93B378F94E19A882A6C7E78999C9A5482985FDA333C3D1E5236C6BDA7935A89178F053FB490'})
    #再次输入网址
    browser.get("https://m.flycua.com")
    

    上面代码包含了获取cookie和实现跳过登录的所有代码,注释部分一定要看清楚。(最早写的是用的python2,后来又拿到python3的环境上执行,根据自己python版本,对脚本略作修改,应该只有print要修改)

    然后我再说一下这代码的局限性。

    1.可以看出cookie里有tokenId,这个tokenId可以使用比较长的一段时间,前提是只执行这自动化脚本,不能再手动登录。因为手动登录又会产生一个新的tokenId,代码需要更新。

    2.如果某些网站打开直接就是登录页,那恐怕就跳不过登录了,即使写入cookie,第二次打开的网页,仍然是登录页,即使写了登录后的网址。(我还见过更厉害的,登录之前和登录之后网址都不变)

    如果不幸要测试的网站中了第二条,那么只能放弃这中办法了。验证码识别会在后续写,可以百度搜索:selenium-识别验证码,我会用这个标题,可能就搜出我写的了。

    展开全文
  • selenium跳webdriver检测并模拟登录淘宝

    千次阅读 热门讨论 2019-03-13 16:47:04
    模拟登录淘宝已经不是一件新鲜的事情了,过去我曾经使用get/post方式进行爬虫,同时也加入IP代理池进行跳检验,但随着大型网站的升级,采取该策略比较难实现了。因为你使用get/post方式进行爬取数据,会提示需要...

    简介

    模拟登录淘宝已经不是一件新鲜的事情了,过去我曾经使用get/post方式进行爬虫,同时也加入IP代理池进行跳过检验,但随着大型网站的升级,采取该策略比较难实现了。因为你使用get/post方式进行爬取数据,会提示需要登录,而登录又是一大难题,需要滑动验证码验证。当你想使用IP代理池进行跳过检验时,发现登录时需要手机短信验证码验证,由此可以知道旧的全自动爬取数据对于大型网站比较困难了。

    selenium是一款优秀的WEB自动化测试工具,所以现在采用selenium进行半自动化爬取数据,支持模拟登录淘宝和自动处理滑动验证码。

    编写思路

    由于现在大型网站对selenium工具进行检测,若检测到selenium,则判定为机器人,访问被拒绝。所以第一步是要防止被检测出为机器人,如何防止被检测到呢?当使用selenium进行自动化操作时,在chrome浏览器中的consloe中输入windows.navigator.webdriver会发现结果为Ture,而正常使用浏览器的时候该值为False。所以我们将windows.navigator.webdriver进行屏蔽。
    在代码中添加:

            options = webdriver.ChromeOptions()
            # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
            options.add_experimental_option('excludeSwitches', ['enable-automation']) 
            self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options)
    

    同时,为了加快爬取速度,我们将浏览器模式设置为不加载图片,在代码中添加:

            options = webdriver.ChromeOptions()
            # 不加载图片,加快访问速度
            options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) 
    

    至此,关键的步骤我们已经懂了,剩下的就是编写代码的事情了。在给定的例子中,需要你对html、css有一定了解。
    比如存在以下代码:

            self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click()
            taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
            print(taobao_name.text)
    

    第1行代码指的是从根目录(//)开始寻找任意(*)一个class名为btn_tip的元素,并找到btn_tip的子元素a标签中的子元素span

    第2行代码指的是等待某个CSS元素出现,否则代码停留在这里一直检测。以.开头的在CSS中表示类名(class),以#开头的在CSS中表示ID名(id)。A > B,指的是A的子元素B。所以这行代码可以理解为寻找A的子元素B的子元素C的子元素D的子元素E出现,否则一直在这里检测。

    第3行代码指的是打印某个元素的文本内容

    使用教程

    1. 点击这里下载下载chrome浏览器
    2. 查看chrome浏览器的版本号,点击这里下载对应版本号的chromedriver驱动
    3. pip安装下列包
      • pip install selenium
    4. 点击这里登录微博,并通过微博绑定淘宝账号密码
    5. 在main中填写chromedriver的绝对路径
    6. 在main中填写微博账号密码
    
    	#改成你的chromedriver的完整路径地址
        chromedriver_path = "/Users/bird/Desktop/chromedriver.exe" 
        #改成你的微博账号
        weibo_username = "改成你的微博账号"
        #改成你的微博密码
        weibo_password = "改成你的微博密码"
        
    

    演示图片


    图片查看不了点击这里

    源代码

    项目源代码在GitHub仓库

    项目持续更新,欢迎您star本项目

    展开全文
  • 微博开放平台地址 ...因为我是接入web网站微博登录功能,...使用微博的OAuth2.0授权接口,完成微博登录功能的开发,这种方式可以和你的网站自身的用户系统连接更紧密,适合有一定开发能力的后端开发人员。 ...

    微博开放平台地址

     

     

     

    因为我是接入web网站微博登录功能,所以,跳过移动应用部分,向下滑动

     

    Web网站

    OAuth2.0授权,与微博登录组件。

    示例

     

    使用接口深度开发,适合后端开发人员

    使用微博的OAuth2.0授权接口,完成微博登录功能的开发,这种方式可以和你的网站自身的用户系统连接更紧密,适合有一定开发能力的后端开发人员。

     

    接口说明
    OAuth2/authorize请求用户授权Token
    OAuth2/access_token获取授权过的Access Token
    OAuth2/get_token_info授权信息查询接口
    OAuth2/revokeoauth2授权回收接口
    OAuth2/get_oauth2_tokenOAuth1.0的Access Token更换至OAuth2.0的Access Token

     

     

    点击进入是下面的页面

    --------------------------------------------------------------------------------------------------

    Oauth2/authorize

    oauth2/authorize

    OAuth2的authorize接口

    URL

    https://api.weibo.com/oauth2/authorize

    HTTP请求方式

    GET/POST

    请求参数

     必选类型及范围说明
    client_idtruestring申请应用时分配的AppKey。
    redirect_uritruestring授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。
    scopefalsestring申请scope权限所需参数,可一次申请多个scope权限,用逗号分隔。使用文档
    statefalsestring用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。开发者可以用这个参数验证请求有效性,也可以记录用户请求授权页前的位置。这个参数可用于防止跨站请求伪造(CSRF)攻击
    displayfalsestring授权页面的终端类型,取值见下面的说明。
    forceloginfalseboolean是否强制用户重新登录,true:是,false:否。默认false。
    languagefalsestring授权页语言,缺省为中文简体版,en为英文版。英文版测试中,开发者任何意见可反馈至 @微博API

     

    返回数据

    返回值字段字段类型字段说明
    codestring用于第二步调用oauth2/access_token接口,获取授权后的access token。
    statestring如果传递参数,会回传该参数。

    示例

    //请求
    https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code
    
    //同意授权后会重定向
    http://www.example.com/response&code=CODE
    

    --------------------------------------------------------------------------------------------------

     

    Web端的验证授权

    引导需要授权的用户到如下地址:

    URL

    1

    https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

    如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

    换取Access Token:

    URL

    1

    https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

    返回值:

    JSON

    1

    2

    3

    4

    5

    {

        "access_token""SlAV32hkKG",

        "remind_in": 3600,

        "expires_in": 3600

    }

    使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。

    注:上面的json中也包含用户信息,uid。

     

     

     

     

     

     

     

    展开全文
  • 后台管理页面里 如果我们想要访问某个页面一定要先登录, 有了权限之后才能访问里面的资源。 有时候需要补登录 直接就访问这个页面  其实很简单 只要设置一下权限就好了  第一。在一个名为...
  • Python绕验证码,直接登录爬数据

    千次阅读 2019-01-04 15:58:19
    小编今天准备爬取一个网站的数据,但是被登录的验证码挡住了 小编很不服   于是小编就想着怎么绕验证码去爬取网站的数据。 虽说图形验证码最简单,但是对于我这等新手,还是要苦学一番。首先寻找测试网站...
  • 网站登录鉴权的实现

    千次阅读 2018-05-26 20:46:03
    网站鉴权的目的就是用户在进行操作前,对用户的身份进行识别并判断其是否具有该操作权限的 程。 网站鉴权的几种方式 这里我们将问题简单化,即操作权限只区分用户是否进行了登录。 Session方式实现 (1)...
  • Springboot网站第三方登录——QQ登录

    千次阅读 热门讨论 2017-06-29 10:40:01
    Springboot网站第三方登录——QQ登录
  • 前嗅ForeSpider教程:网站登录配置

    千次阅读 2019-02-18 11:54:58
    今天小编就教大家:如何进行网站登录配置,具体步骤如下:   【登录网站配置】   第一步:打开登录网站按钮   点击登录网站按钮, “登录网站”功能启动。 ①手动:默认方式。当登录的Cookie失效后,...
  • UI自动化测试登录如何跳验证码

    千次阅读 2017-08-29 17:56:06
    注意:本标题的“自动化测试” 包括性能测试 与UI级的... 对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对
  • 是否还记得自己的手机号都登录过一些什么网站?是否都还记得自己的手机号在哪些网站注册绑定?是否还记得自己的手机号都绑定什么应用?如果要更换手机号了,切记一定记得解绑!!  网上有很多关于更换手机号了...
  • 转载地址 http://www.cnblogs.com/lihuidu/p/6495247.html1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,...
  • 昨天尝试了一下这个discuz论坛,感觉还可以。今天刚刚用管理员账户进入后台管理,准备改一改界面熟悉一下,不了10秒钟。...可能是客户登录的账号存在一定的安全隐患,discuz出于保护客户数据考...
  • 接上一篇内容: ...1、存在SQL注入漏洞2、SQL注入查询长度为9个字段,即 union select 1,2,3,4,5,6,7,8,93、网站无错误回显,SQL执行错误显示空白页面 数据库信息: 1、数据库版本:mysql 5...
  • 如何设计网站登录和注册功能

    千次阅读 2018-04-04 10:47:43
    但是你一定会发现,就是这么简单的登录和注册,有的网站做的行云流水和如丝般顺滑,有的网站做的沟沟坎坎和雷坑遍布。什么会有这么大的差异?主要在于思路的混乱和不一致。只有掌握了严谨和逻辑的设计思路,不仅...
  • 点击QQ互联后本就会出现“您的站点未开启此项云服务,请开启相应插件点击关闭QQ互联也是出现提示系统繁忙,请稍后再试”的... 1.获得QQ互联key ...注册审核通过后,操作添加一个网站应用,需要添加网站名称,网站类...
  • 为了练手,我就自己试着做了一个网站登录与注册的小案例。由于没有做美化处理,所以界面并不是很好看。网站实现的功能如下: 用户首次注册功能 用户登录功能 项目目录展示: 下面我将会分模块展示注册模块首先...
  • 1.登录系统 功能:响应用户的登录请求。 用Cookie实现Session,Redis存储Session数据。 登录服务化,响应HTTP或HTTPS格式的请求。 具体做法,可以参照boss的做法。 上述做法目标有2个: a.登录系统,单独拿...
  • 网页一进入判断是否登录,未登录跳转到登录页面 router.js export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld, meta: { title: '首页', type:...
  • 【日常】某B视频网站模拟登录尝试

    万次阅读 多人点赞 2019-04-07 20:54:50
    2019.04.07 更新 ...选择了某B视频网站登录尝试模拟登录。 为什么会选择去对付某B视频网站,主要想试试看能不能解决掉滑动验证码这个一直想尝试的问题。考虑到现在登录验证的方式往往更新得...
  • 登录授权 登录及安全 为每个请求增加Token Token超时及刷新机制 创建系统菜单 模拟菜单数据 生成菜单 实现点击一级菜单收回所有其他子菜单 NEXT——主题切换 源码 本系列目录 登录授权 登录及安全 ...
  • 我是做Java开发,公司有个网站需要用微信做三方登录,这个微信开放平台上都有,但还有个要求是用户扫码登录之后手机端微信自动跳转到公司的公众号上的一篇文章去,其实就是一个网页嘛,现在不知道怎么做这个自动跳转...
  • 这些网站才算会爬虫

    千次阅读 2019-05-02 08:57:14
    从是否需要登陆这方面来说,一些简单网站不需要登陆就可以爬,比如之前爬的猫眼电影、东方财富网等。有一些网站需要先登陆才能爬,比如知乎、微信等。这类网站在模拟登陆时需要处理验证码、js 加密参数这些问题,...
  • java 第三方登录之QQ登录

    万次阅读 2016-04-21 11:21:19
    刚刚做了一个第三方登录网站,之前没有做,在网上找前辈们的杰作,但都没有找到,只好自己摸索,做出来QQ第三方登录。 1、要做QQ第三方登录,首先得在QQ互联(http://wiki.connect.qq.com/)上有账号,也...
  • 首先一定要先了解到cookie和session是什么,这是后面理解网站交互,模拟用户登录的基础。 1.1. 无状态协议:Http 如上图所示,HTTP协议 是无状态的协议,用户浏览服务器上的内容,只需要发送页面请求,...
  • 最近几天屡次出现登录CSDN账户登陆问题,具体的问题是:在以往保留的正确的账号和密码的界面上自动登录登录到了一个...3. 最后我将浏览器里的上网痕迹给设置清理了一下,添加了清理Cookies这一项,结果再进入登录
  • 本篇介绍的二维码登录不是微信开发平台的二维码登录,而是利用微信公众号临时二维码扫码事件关注公众号进行登录注册, 浏览器判断扫码状态有两种方式, 第一种是ajax每隔一秒进行轮询,如果用户扫码了则后台给个...
  • 背景:用户登录过网站,但是用户并不是永远都处于登陆状态,接下来就探讨下,我们是什么时机对用户登陆状态进行校验并且校验后 登录超时 应该如何处理。第一步:用户输入用户名密码后点击登录,客户端会调用登录...
  • 什么是单点登录(SSO)单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。单点登录(Single Sign On),简称为 SSO,是目前比较流行的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,816
精华内容 38,326
关键字:

一定过网站登录