zoukankan      html  css  js  c++  java
  • selenium——mitmproxy过检测

    系统:ubuntu 16.04

    安装:

    sudo pip3 install mitmproxy

    配置:

     

     

     

     

    配置代理:

     

    过检测脚本:

    import mitmproxy.http
    
    t1 = """
    // 改写 `languages` 
    Object.defineProperty(navigator, "languages", {
      get: function() {
        return ["en", "es"];
      }
    });
    
    //改写 `plugins`
    Object.defineProperty(navigator, "plugins", {
      get: () => new Array(Math.floor(Math.random() * 6) + 1),
    });
    
    // 改写`webdriver`
    Object.defineProperty(navigator, "webdriver", {
      get: () => false,
    });
    """
    class Tb(object):
        def response(slef,flow: mitmproxy.http.HTTPFlow):
            if 'http://bj.gsxt.gov.cn/index.html' == flow.request.url:
                    flow.response.text = "<script>"+t1+"</script>" + flow.response.text
                    print('注入成功')
    
    addons = [
        Tb()
    ]

    启动脚本:

    mitmdump -s mitm.py

    selenium启动:

    from selenium import webdriver
    driver = webdriver.Chrome(executable_path='./chromedriver')
    url = 'http://bj.gsxt.gov.cn/index.html'
    driver.get(url)
    contant = driver.page_source
    input("........!!!")
    driver.close()

    结果:

     

     总结:搞这个selenium过检测搞了好久,原本的目的是想破解这个网站的验证码问题的,结果用selenium打开网页返回的是一个空白页面,且空白页面中包含了一堆使用Obfuscator工具混淆的js代码(这段代码其实就是生成一个cookie字段的,可以看一下我之前写的cookie反爬那篇文章,不过已经失效了,用那个代码返回的就是这个混淆后的js代码),后来使劲浑身解数去网上找各种反混淆方案,查到crack.js可以反混淆,反混淆的结果其实也是一脸的懵逼啊,最后看到这么个东西

     if (window["call" + "Phan" + "tom"] || window["_pha" + "ntom"] || window["Head" + "less"] || window["navi" + "gato" + "r"]["webd" + "rive" + "r"] || window["navi" + "gato" + "r"]["__dr" + "iver" + "_eva" + "luat" + "e"] || window["navi" + "gato" + "r"]["__we" + "bdri" + "ver_" + "eval" + "uate"]) {
          return !![];

    最后我给手动拼接了一下:

    callPhantom
    _phantom
    Headless
    navigator.webdriver
    navigator.__driver_evaluate
    navigator.__webdriver_evaluate

    这明显是检测phantomjs和selenium的,沃日,然后就研究这个selenium过检测问题,搞了好久才搞定了,到这里过检测就完成了,想着接下来就可以搞验证码了,

    最后发现过检测后都不需要验证码验证了。。。。。。。

    存留的问题:有时候访问会出现站点验证码出现的问题,手动输入验证码后,过验证码后会出现"疑似夹带攻击行为的页面出现"。我怀疑是请求太过频繁的缘故,找了写跟换代理的带码先放这了

    import random
    from selenium import webdriver
    proxy_list = [ '127.0.0.1:proxy:80',
                   '127.0.0.2:proxy:80']
    
    PROXY = '--proxy-server={0}'.format(random.choice(proxy_list))
    print(PROXY)
    
    chrome_options = webdriver.ChromeOptions()
    desired_capabilities = chrome_options.to_capabilities()
    
    desired_capabilities['proxy'] = {
        "httpProxy":PROXY,
        "noProxy":None,
        "proxyType":"MANUAL",
        "class":"org.openqa.selenium.Proxy",
        "autodetect":False
    }
    driver = webdriver.Chrome(desired_capabilities=desired_capabilities)
    driver.get('https://www.2345.com/')  
  • 相关阅读:
    Set,List,Map,Vector,ArrayList的区别
    关于List,Set,Map能否存储null
    JAVA集合 DelayQueue 的使用 (同步的超时队列)
    FluentScheduler .Net 定时Job
    BeanFactory和FactoryBean
    ansj 分词,超过了标准的 IK 分词.
    Python字典、集合结构详解
    Python列表、元组结构详解
    C语言--结构体&文件
    C语言--指针
  • 原文地址:https://www.cnblogs.com/kindvampire/p/13492770.html
Copyright © 2011-2022 走看看