0
아래 코드는 phantomJS 인스턴스에 대해 사용자 에이전트를 설정하고 인쇄 한 다음 다시 결정하는 웹 사이트를 긁습니다. 결과는 다릅니다. 어떻게 이럴 수있어? 나는 아직까지 this 명백한 해결책을 재현 할 수 없었다.어떻게 파이썬에서 PhantomJS를 사용하여 두 개의 다른 사용자 에이전트를 동시에 사용할 수 있습니까?
1) 설정 ONE 사용자 에이전트
serviceDefaults=["--ignore-ssl-errors=yes",]
desiredDefaults={
"phantomjs.page.settings.userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"}
2) 설정 드라이버와 인쇄 사용자 에이전트
def create_phantomJS():
driver = webdriver.PhantomJS("phantomjs.exe", desired_capabilities=desiredDefaults, service_args=serviceDefaults)
phantom_exc_uri='/session/$sessionId/phantom/execute'
driver.command_executor._commands['executePhantomScript'] = ('POST', phantom_exc_uri)
initScript="""
this.onInitialized=function() {
var page=this;
if (page.navigator == page.settings.userAgent){return};
page.settings.navigator = page.settings.userAgent;
}
"""
driver.execute('executePhantomScript',{'script': initScript, 'args': []})
agent = driver.execute_script("return navigator.userAgent")
print "rawUa:", agent
return driver
3) 사용자 에이전트를 확인하고 인쇄 할 긁어 웹 사이트 그것을
def use_driver(driver, URL):
website = driver.get(URL)
html = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.ID, "rawUa")))
return text
4) 비교 결과
driver = create_phantomJS()
text = use_driver(driver, URL)
print text
출력은 두 개의 다른 사용 도구입니다.
rawUa: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1
rawUa: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36
어떻게 파이썬에서이 시나리오에서 사용자 에이전트와 일치 하는가?
은 매력처럼 작동합니다. 솔직히 - 많은 감사합니다. – sudonym