工作中,用Selenium自動化填表並獲取結果時,程序一直安靜的讀取數據庫,網頁填表,獲取結果,存庫,但跑着跑着突然報錯了。
排查后,原來不是Selenium的問題,是數據比較特殊,帶了個雙引號,如下
填表后提交時,觸發了Chrome XSS自動過濾器 xssAuditor,導致POST請求攔截。(文尾會延伸:Chrome xssAuditor的工作原理)
Chrome提示如下錯誤:
然后查了下解決辦法,能否關閉 xssAuditor,非WIN10下個人認為最好的解決辦法如下:
https://www.cnblogs.com/SKTone/p/8331763.html
但WIN10沒法按此辦法解決,只能放棄Chrome瀏覽器 ,聲明瀏覽器改火狐(browser = webdriver.Firefox() ),換用火狐后,它沒有自動過濾的情況 【成功解決】
延伸部分:
Chrome xssAuditor的工作原理:
chrome的xss檢測名稱為 xssAuditor 整合到webkit當中,chrome這么做的原因是因為過濾器可以在腳本執行之前就可以攔截,而且任何使用webkit都可以使用這些規則
當加載網頁時,xssAuditor會在渲染的之前評估用戶的輸入數據:
1.檢查用戶輸入是否包含惡意內容,如果存在進行攔截
2.xssAuditor檢測用戶是否會反射到渲染的頁面中(html實體/html熟悉/javascript/css/url)
3.評估輸入上下文是否合法,非法進行過濾
chrome的檢測機理和ie還有很大的區別是,chrome是在此法解析階段進行的,講html解析不同的token(類似php vld opcode),xssAuditor會逐一掃描檢測token,
如果token中發現危險的屬性和URL進行比較,如果URL中也存在同樣的數據,xssAuditor則會認為這是一個反射XSS。
demo:
解析器解析<iframe src="x" onerror="alert(1)"></iframe>
1.依次檢查標簽iframe是否包含惡意屬性,src/onerror
2.如果src不是以javascript:開頭,則安全,放行
3.onerror中含有腳本,檢查URL是否包含
4.如果出現在URL中,認為存在安全問題,將過濾 <iframe src="x" onerror="void(0)"></iframe>
5.中止iframe標簽檢查