Mon, 07 Nov 2022 17:19:58 +0100
Corrected/acknowledged some bad import style and removed some obsolete code.
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
8881
54e42bc2437a
Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8354
diff
changeset
|
3 | # Copyright (c) 2016 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a class to handle URL requests before they get processed |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | by QtWebEngine. |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
11 | from PyQt6.QtCore import QMutex, QUrl |
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
12 | from PyQt6.QtWebEngineCore import ( |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
13 | QWebEngineUrlRequestInfo, |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
14 | QWebEngineUrlRequestInterceptor, |
7268
a28338eaf694
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
15 | ) |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
17 | from eric7 import Preferences |
9413
80c06d472826
Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
18 | from eric7.EricUtilities.EricMutexLocker import EricMutexLocker |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
19 | |
4906
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4857
diff
changeset
|
20 | from ..WebBrowserPage import WebBrowserPage |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4857
diff
changeset
|
21 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | class NetworkUrlInterceptor(QWebEngineUrlRequestInterceptor): |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Class implementing an URL request handler. |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
27 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | def __init__(self, parent=None): |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | Constructor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
31 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @param parent reference to the parent object |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @type QObject |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
35 | super().__init__(parent) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
36 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.__interceptors = [] |
6131
1ecd0c53e117
Changed the URL interceptor to properly lock the mutex.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
38 | self.__mutex = QMutex() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
39 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | self.__loadSettings() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
41 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | def interceptRequest(self, info): |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | Public method handling an URL request. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
45 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | @param info URL request information |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | @type QWebEngineUrlRequestInfo |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | """ |
8354
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
49 | with EricMutexLocker(self.__mutex): |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
50 | # Do Not Track feature |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
51 | if self.__doNotTrack: |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
52 | info.setHttpHeader(b"DNT", b"1") |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
53 | info.setHttpHeader(b"X-Do-Not-Track", b"1") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
54 | |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
55 | # Send referrer header? |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
56 | if info.requestUrl().host() not in Preferences.getWebBrowser( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
57 | "SendRefererWhitelist" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
58 | ): |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
59 | self.__setRefererHeader(info) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
60 | |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
61 | # User Agents header |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
62 | userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
63 | info.setHttpHeader(b"User-Agent", userAgent.encode()) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
64 | |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
65 | for interceptor in self.__interceptors: |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
66 | interceptor.interceptRequest(info) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
67 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | def installUrlInterceptor(self, interceptor): |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | Public method to install an URL interceptor. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
71 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | @param interceptor URL interceptor to be installed |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | @type UrlInterceptor |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | """ |
8354
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
75 | with EricMutexLocker(self.__mutex): |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
76 | if interceptor not in self.__interceptors: |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
77 | self.__interceptors.append(interceptor) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
78 | |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4906
diff
changeset
|
79 | def removeUrlInterceptor(self, interceptor): |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | Public method to remove an URL interceptor. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
82 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | @param interceptor URL interceptor to be removed |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | @type UrlInterceptor |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | """ |
8354
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
86 | with EricMutexLocker(self.__mutex): |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
87 | if interceptor in self.__interceptors: |
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
88 | self.__interceptors.remove(interceptor) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
89 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | def __loadSettings(self): |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | Private method to load the Network Manager settings. |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | """ |
8354
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
94 | with EricMutexLocker(self.__mutex): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
95 | self.__doNotTrack = Preferences.getWebBrowser("DoNotTrack") |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
96 | self.__sendReferer = Preferences.getWebBrowser("RefererSendReferer") |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
97 | self.__refererDefaultPolicy = Preferences.getWebBrowser( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
98 | "RefererDefaultPolicy" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
99 | ) |
7774
9eed155411f0
Changed code to our own context manager type mutex locker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
100 | self.__refererTrimmingPolicy = Preferences.getWebBrowser( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
101 | "RefererTrimmingPolicy" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
102 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
103 | |
4825
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | def preferencesChanged(self): |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | Public slot to handle a change of preferences. |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | """ |
b5fb58f3830b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | self.__loadSettings() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
109 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
110 | def __setRefererHeader(self, info): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
111 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
112 | Private method to set the 'Referer' header depending on the configured |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
113 | rule set. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
114 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
115 | @param info URL request information |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
116 | @type QWebEngineUrlRequestInfo |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
117 | @see <a href="https://wiki.mozilla.org/Security/Referrer"> |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
118 | Mozilla Referrer</a> |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
119 | @see <a href="https://www.w3.org/TR/referrer-policy/"> |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
120 | W3C Referrer Policy</a> |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
121 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
122 | # 1. SendReferer: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
123 | # 0 = never |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
124 | # 1 = only on click (NavigationTypeLink) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
125 | # 2 = always (default) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
126 | # 2. RefererTrimmingPolicy: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
127 | # 0 = send full URL (no trimming) (default) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
128 | # 1 = send the URL without its query string |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
129 | # 2 = only send the origin (ensure trailing /) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
130 | # 3. RefererDefaultPolicy: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
131 | # set the default referrer policy (which can be overriden by |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
132 | # the site) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
133 | # 0 = no-referrer |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
134 | # 1 = same-origin |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
135 | # 2 = strict-origin-when-cross-origin |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
136 | # 3 = no-referrer-when-downgrade (default) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
137 | # see: https://wiki.mozilla.org/Security/Referrer |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
138 | # see: https://www.w3.org/TR/referrer-policy/ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
139 | |
8228
772103b14c18
Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
140 | if ( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
141 | self.__sendReferer == 0 |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
142 | # never send referrer header |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
143 | or ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
144 | self.__sendReferer == 1 |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
145 | and ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
146 | info.navigationType() |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
147 | != QWebEngineUrlRequestInfo.NavigationType.NavigationTypeLink |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
148 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
149 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
150 | # send referrer header only on click |
8228
772103b14c18
Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
151 | ): |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
152 | info.setHttpHeader(b"Referer", b"") |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
153 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
154 | # send referer header always applying further policies |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
155 | url = info.firstPartyUrl() |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
156 | reqUrl = info.requestUrl() |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
157 | if self.__refererDefaultPolicy == 0: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
158 | # no-referrer |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
159 | refererUrl = b"" |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
160 | elif self.__refererDefaultPolicy == 1: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
161 | # same-origin |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
162 | if self.__sameOrigin(url, reqUrl): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
163 | refererUrl = self.__trimmedReferer(url) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
164 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
165 | refererUrl = b"" |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
166 | elif self.__refererDefaultPolicy == 2: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
167 | # strict-origin-when-cross-origin |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
168 | if self.__sameOrigin(url, reqUrl): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
169 | refererUrl = self.__trimmedReferer(url) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
170 | elif url.scheme() in ("https", "wss"): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
171 | if self.__potentiallyTrustworthy(url): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
172 | refererUrl = self.__refererOrigin(url) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
173 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
174 | refererUrl = b"" |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
175 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
176 | refererUrl = self.__refererOrigin(url) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
177 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
178 | # no-referrer-when-downgrade |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
179 | if url.scheme() in ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
180 | "https", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
181 | "wss", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
182 | ) and not self.__potentiallyTrustworthy(url): |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
183 | refererUrl = b"" |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
184 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
185 | refererUrl = self.__trimmedReferer(url) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
186 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
187 | info.setHttpHeader(b"Referer", refererUrl) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
188 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
189 | def __sameOrigin(self, url1, url2): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
190 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
191 | Private method to test the "same origin" policy. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
192 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
193 | @param url1 first URL for the test |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
194 | @type QUrl |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
195 | @param url2 second URL for the test |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
196 | @type QUrl |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
197 | @return flag indicating that both URLs have the same origin |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
198 | @rtype bool |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
199 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
200 | origin1 = url1.url( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
201 | QUrl.UrlFormattingOption.RemoveUserInfo |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
202 | | QUrl.UrlFormattingOption.RemovePath |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
203 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
204 | origin2 = url2.url( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
205 | QUrl.UrlFormattingOption.RemoveUserInfo |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
206 | | QUrl.UrlFormattingOption.RemovePath |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
207 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
208 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
209 | return origin1 == origin2 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
210 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
211 | def __potentiallyTrustworthy(self, url): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
212 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
213 | Private method to check, if the given URL is potentially trustworthy. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
214 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
215 | @param url URL to be checked |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
216 | @type QUrl |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
217 | @return flag indicating a potentially trustworthy URL |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
218 | @rtype bool |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
219 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
220 | if url.scheme() == "data": |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
221 | return False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
222 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
223 | if url.toString() in ("about:blank", "about:srcdoc"): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
224 | return True |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
225 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
226 | origin = url.adjusted( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
227 | QUrl.UrlFormattingOption.RemoveUserInfo |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
228 | | QUrl.UrlFormattingOption.RemovePath |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
229 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
230 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
231 | if origin.isEmpty() or origin.scheme() == "": |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
232 | return False |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
233 | if origin.scheme() in ("https", "wss"): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
234 | return True |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
235 | if origin.host().startswith("127.") or origin.host().endswith(":1"): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
236 | return True |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
237 | if origin.host() == "localhost" or origin.host().endswith(".localhost"): |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
238 | return True |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
239 | if origin.scheme() == "file": |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
240 | return True |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
241 | if origin.scheme() in ("qrc", "qthelp", "eric"): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
242 | return True |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
243 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
244 | return False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
245 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
246 | def __trimmedReferer(self, url): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
247 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
248 | Private method to generate the trimmed referer header URL. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
249 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
250 | @param url URL to be trimmed as a referer header |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
251 | @type QUrl |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
252 | @return trimmed referer header URL |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
253 | @rtype QByteArray or bytes |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
254 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
255 | if self.__refererTrimmingPolicy == 0: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
256 | # send full URL (no trimming) (default) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
257 | refererUrl = url.toEncoded( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
258 | QUrl.UrlFormattingOption.RemoveUserInfo |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
259 | | QUrl.UrlFormattingOption.RemoveFragment |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
260 | ) |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
261 | elif self.__refererTrimmingPolicy == 1: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
262 | # send the URL without its query string |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
263 | refererUrl = url.toEncoded( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
264 | QUrl.UrlFormattingOption.RemoveUserInfo |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
265 | | QUrl.UrlFormattingOption.RemoveFragment |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
266 | | QUrl.UrlFormattingOption.RemoveQuery |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
267 | ) |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
268 | else: |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
269 | # only send the origin (ensure trailing /) |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
270 | refererUrl = self.__refererOrigin(url) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
271 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
272 | return refererUrl |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
273 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
274 | def __refererOrigin(self, url): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
275 | """ |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
276 | Private method to generate an origin referer header URL. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
277 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
278 | @param url URL to generate the header from |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
279 | @type QUrl |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
280 | @return origin referer header URL |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
281 | @rtype QByteArray or bytes |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
282 | """ |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
283 | referer = url.toEncoded( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
284 | QUrl.UrlFormattingOption.RemoveUserInfo |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
285 | | QUrl.UrlFormattingOption.RemovePath |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
286 | ) |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
287 | if not referer.endsWith(b"/"): |
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
288 | referer += b"/" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
289 | |
6281
9f7bbfd6545d
WebBrowser, NetworkUrlInterceptor: added code to control the sending of the "Referer" header (similiar to Firefox)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6277
diff
changeset
|
290 | return referer |