系统: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/')  

 

posted on 2020-08-12 20:22  kindvampire  阅读(2178)  评论(0编辑  收藏  举报