| 15 | |
| 16 | |
| 17 | class RequestInterceptor(QNetworkAccessManager): |
| 18 | |
| 19 | def createRequest(self, op, originalReq, outgoingData): |
| 20 | """创建请求 |
| 21 | :param op: 操作类型见http://doc.qt.io/qt-5/qnetworkaccessmanager.html#Operation-enum |
| 22 | :param originalReq: 原始请求 |
| 23 | :param outgoingData: 输出数据 |
| 24 | """ |
| 25 | url = originalReq.url().toString() |
| 26 | if url.find('pos.baidu.com') > -1 and url.find('ltu=') > -1: |
| 27 | # 拦截百度联盟的广告 |
| 28 | print('block:', url) |
| 29 | originalReq.setUrl(QUrl()) |
| 30 | if op == self.PostOperation and outgoingData: |
| 31 | # 拦截或者修改post数据 |
| 32 | # 读取后要重新设置,不然网站接收不到请求 |
| 33 | data = outgoingData.readAll().data() |
| 34 | print('post data:', data) |
| 35 | # 修改data后重新设置 |
| 36 | outgoingData = QBuffer(self) |
| 37 | outgoingData.setData(data) |
| 38 | |
| 39 | return super(RequestInterceptor, self).createRequest(op, originalReq, outgoingData) |
| 40 | |
| 41 | |
| 42 | class Window(QWebView): |