8 by QtWebEngine. |
8 by QtWebEngine. |
9 """ |
9 """ |
10 |
10 |
11 |
11 |
12 from PyQt5.QtCore import QMutex, QMutexLocker, QUrl |
12 from PyQt5.QtCore import QMutex, QMutexLocker, QUrl |
13 from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInterceptor, \ |
13 from PyQt5.QtWebEngineCore import ( |
14 QWebEngineUrlRequestInfo |
14 QWebEngineUrlRequestInterceptor, QWebEngineUrlRequestInfo |
|
15 ) |
15 |
16 |
16 from ..WebBrowserPage import WebBrowserPage |
17 from ..WebBrowserPage import WebBrowserPage |
17 |
18 |
18 import Preferences |
19 import Preferences |
19 |
20 |
49 if self.__doNotTrack: |
50 if self.__doNotTrack: |
50 info.setHttpHeader(b"DNT", b"1") |
51 info.setHttpHeader(b"DNT", b"1") |
51 info.setHttpHeader(b"X-Do-Not-Track", b"1") |
52 info.setHttpHeader(b"X-Do-Not-Track", b"1") |
52 |
53 |
53 # Send referrer header? |
54 # Send referrer header? |
54 if info.requestUrl().host() not in \ |
55 if info.requestUrl().host() not in Preferences.getWebBrowser( |
55 Preferences.getWebBrowser("SendRefererWhitelist"): |
56 "SendRefererWhitelist"): |
56 self.__setRefererHeader(info) |
57 self.__setRefererHeader(info) |
57 |
58 |
58 # User Agents header |
59 # User Agents header |
59 userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) |
60 userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) |
60 info.setHttpHeader(b"User-Agent", userAgent.encode()) |
61 info.setHttpHeader(b"User-Agent", userAgent.encode()) |
92 """ |
93 """ |
93 locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ |
94 locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ |
94 |
95 |
95 self.__doNotTrack = Preferences.getWebBrowser("DoNotTrack") |
96 self.__doNotTrack = Preferences.getWebBrowser("DoNotTrack") |
96 self.__sendReferer = Preferences.getWebBrowser("RefererSendReferer") |
97 self.__sendReferer = Preferences.getWebBrowser("RefererSendReferer") |
97 self.__refererDefaultPolicy = \ |
98 self.__refererDefaultPolicy = Preferences.getWebBrowser( |
98 Preferences.getWebBrowser("RefererDefaultPolicy") |
99 "RefererDefaultPolicy") |
99 self.__refererTrimmingPolicy = \ |
100 self.__refererTrimmingPolicy = Preferences.getWebBrowser( |
100 Preferences.getWebBrowser("RefererTrimmingPolicy") |
101 "RefererTrimmingPolicy") |
101 |
102 |
102 def preferencesChanged(self): |
103 def preferencesChanged(self): |
103 """ |
104 """ |
104 Public slot to handle a change of preferences. |
105 Public slot to handle a change of preferences. |
105 """ |
106 """ |
167 refererUrl = b"" |
168 refererUrl = b"" |
168 else: |
169 else: |
169 refererUrl = self.__refererOrigin(url) |
170 refererUrl = self.__refererOrigin(url) |
170 else: |
171 else: |
171 # no-referrer-when-downgrade |
172 # no-referrer-when-downgrade |
172 if url.scheme() in ("https", "wss") and \ |
173 if ( |
173 not self.__potentiallyTrustworthy(url): |
174 url.scheme() in ("https", "wss") and |
|
175 not self.__potentiallyTrustworthy(url) |
|
176 ): |
174 refererUrl = b"" |
177 refererUrl = b"" |
175 else: |
178 else: |
176 refererUrl = self.__trimmedReferer(url) |
179 refererUrl = self.__trimmedReferer(url) |
177 |
180 |
178 info.setHttpHeader(b"Referer", refererUrl) |
181 info.setHttpHeader(b"Referer", refererUrl) |
214 return False |
217 return False |
215 if origin.scheme() in ("https", "wss"): |
218 if origin.scheme() in ("https", "wss"): |
216 return True |
219 return True |
217 if origin.host().startswith("127.") or origin.host().endswith(":1"): |
220 if origin.host().startswith("127.") or origin.host().endswith(":1"): |
218 return True |
221 return True |
219 if origin.host() == "localhost" or \ |
222 if ( |
220 origin.host().endswith(".localhost"): |
223 origin.host() == "localhost" or |
|
224 origin.host().endswith(".localhost") |
|
225 ): |
221 return True |
226 return True |
222 if origin.scheme() == "file": |
227 if origin.scheme() == "file": |
223 return True |
228 return True |
224 if origin.scheme() in ("qrc", "qthelp", "eric"): |
229 if origin.scheme() in ("qrc", "qthelp", "eric"): |
225 return True |
230 return True |