Selenium-webdriver가 반파충류 메커니즘을 돌리는 4가지 방법
1,mitproxy 차단 요청 ≠
본질적으로 응답에서mitproxy를 이용하여 포함된 웹driver의 JS의 키워드를 다른 문자로 바꾸는 것이다
1. 본 기기에 프록시 ip 127.0.1 포트 8001(모든 데이터를mitmproxy로 보내기 위해)을 설정하는 구체적인 방법은 바이두를 참조하십시오.
2.mitmproxy를 시작합니다.
windows:
mitmdump -p 8001
3. 크롬의 개발자 도구를 열고 각각을 찾아라.js 파일,driver 문자가 있는지 확인하고, 최종적으로 필요한 것을 찾습니다.js 파일.4. 스크립트 방해
def response(flow):
if '/js/yoda.' in flow.request.url:
for webdriver_key in ['webdriver', '__driver_evaluate', '__webdriver_evaluate', '__selenium_evaluate', '__fxdriver_evaluate', '__driver_unwrapped', '__webdriver_unwrapped', '__selenium_unwrapped', '__fxdriver_unwrapped', '_Selenium_IDE_Recorder', '_selenium', 'calledSelenium', '_WEBDRIVER_ELEM_CACHE', 'ChromeDriverw', 'driver-evaluate', 'webdriver-evaluate', 'selenium-evaluate', 'webdriverCommand', 'webdriver-evaluate-response', '__webdriverFunc', '__webdriver_script_fn', '__$webdriverAsyncExecutor', '__lastWatirAlert', '__lastWatirConfirm', '__lastWatirPrompt', '$chrome_asyncScriptInfo', '$cdc_asdjflasutopfhvcZLmcfl_' ]:
ctx.log.info('Remove "{}" from {}.'.format(
webdriver_key, flow.request.url
))
flow.response.text = flow.response.text.replace('"{}"'.format(webdriver_key), '"NO-SUCH-ATTR"')
flow.response.text = flow.response.text.replace('t.webdriver', 'false')
flow.response.text = flow.response.text.replace('ChromeDriver', '')
5. 아까mitmproxy 상태를 종료하고 명령줄로mitmproxy를 다시 시작하여 스크립트가 8001 포트의 요청과 응답을 감청하는 것을 방해합니다.
mitmdump -s DriverPass.py -p 8001
2. 원본 수정×js/call_ 수정function.js, 129줄.
var doc = opt_doc || document;
var key = '$cdc_asdjflasutopfhvcZLmcfl_';
if (!(key in doc))
doc[key] = new Cache();
return doc[key];
}
C> 수정 후
function getPageCache(opt_doc) {
var doc = opt_doc || document;
var key = ‘$bobo_zhangyx_';
if (!(key in doc))
doc[key] = new Cache();
return doc[key];
}
테스트를 통해 이미 효력을 잃은 것 같은데, 아마도 버전의 교체 문제 때문일 것이다.3. 수동으로 달리기 프로그램을 켜기 ≠
cmd 실행 명령
chrome.exe --remote-debugging-port=9222
브라우저를 열고py 코드에서
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
4. V63 이전 크롬 및 드라이버 교체(좋은 방법인 것 같은데 시도하지 않았다)
Selenium-webdriver가 반파충류 메커니즘을 우회하는 4가지 방법에 대한 상세한 설명은 여기 있습니다. 더 많은 Selenium webdriver 반파충류 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python Selenium XPath 텍스트 내용에 따라 요소 찾기 방법문제 현상 요소의 속성에 id,name이 없습니다.class가 있지만 비교적 대중적이고 위치도 고정되지 않는다.예를 들어 페이지 번호의 다음 페이지;그러면 어떻게 이 원소를 찾아야 합니까? 해결 방법 text() t...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.