一 mitmproxy安装
mitmproxy:就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
安装方式: linux,mac,windows都一样,pip install mitmrpoxy
参考教程:/
各位最好按照参考教程过一遍熟悉每个func的定义,基本都能跑通。最后那一步addons是关键,需要给你定义的class运行放进去。
mitmproxy设置:mitmdefine.py:
import mitmproxy.http
t0 ='Object.defineProperties(navigator,{webdriver:{get:() => false}});'
t1 = 'window.navigator.chrome = {runtime: {},// etc.};'
t2 = '''
Object.defineProperty(navigator, 'languages', {
get: () => ['en-US', 'en']
});
'''
t3 = '''
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5,6],
});
'''
t4 = '''
Object.defineProperties(navigator,{
userAgent:{
get: () => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36;
}
})
'''
class Tb(object):
def response(slef,flow: mitmproxy.http.HTTPFlow):
if '114.js' quest.url or 'um.js' quest.url:
= t3 + t2 + t4 + t0 +
print('注入成功')
addons = [
Tb()
]
注释:t0是对webdriver navigator的伪装,为false。t2,t3,t4是针对headless进行的伪装,简而言之就是无头跟有头之间的三个明显化差异,想想就知道了,一个是请求头,一个浏览器的设置语言,一个是浏览器插件。
启动命令: 命令段运行
mitmdumps -s mitmfile.py or mitmweb -s mitmfile.py '''mtimfile 你的mitm文件名称'''
启动结果:
二 登陆
只要启动了mitmrpxy伪装,一切selenium都可以实现登陆(原则上是,有一段时间哪怕是有界面的都不行,怀疑是有了新的js检测)
def __init_browser(self):
options = Options()
# service_args = ['--proxy=127.0.0.1:8080','--proxy-type=http','--ignore-ssl-errors=true']
# DesiredCapabilities.PHANTOMJS[
# 'phantomjs.page.settings.userAgent'] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"
# options.add_argument("--headless")
# options.add_argument('--disable-gpu')
options.add_argument('--proxy-server=127.0.0.1:8080')
# options.add_argument(
# 'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36')
self.browser = webdriver.Chrome(options=options)
# self.browser = webdriver.PhantomJS(service_args=service_args)
return self.browser
def __login(self):
(TB_LOGIN_URL)
# ('.html')
page = self.browser.page_source
_screenshot_as_file('2222.png')
WebDriverWait(self.browser, 20).until(
EC.presence_of_element_located((By.ID, 'TPL_username_1'))
)
self.browser.find_element_by_xpath('//input[@id="TPL_username_1"]').send_keys(un)
_screenshot_as_file('4444.png')
time.sleep(0.5)
self.browser.find_element_by_xpath('//input[@id="TPL_password_1"]').send_keys(pwd)
time.sleep(0.5)
_screenshot_as_file('3333.png')
time.sleep(10)
self.__f5__slider()
if self.__lock_exist():
print('存在滑块解锁')
time.sleep(1.5)
self.__unlock()
self.browser.find_element_by_xpath('//button[@id="J_SubmitStatic"]').click()
这里只贴了两段代码。一段是初始化浏览器的,注释掉的代码包括chromeheadlss的运行以及phantomjs的运行,本文只涉及有头模式下启动,另外一段时login滑块的判断。
三 命令端查看
四 推荐其它几个网站地址
1. selenium的webdirver检测,包括chrome内核特征值的修改
2. 针对tm的研究
/
原文链接:
=distribute.pc_-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_-task-blog-BlogCommendFromBaidu-2
=distribute.pc_-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_-task-blog-BlogCommendFromBaidu-1
=distribute.-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.-task-blog-BlogCommendFromBaidu-3
本文发布于:2024-02-01 21:51:18,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679547539641.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |