ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

你会如何使用Python进行广告拦截?

2019-05-22 12:42:17  阅读:407  来源: 互联网

标签:python pyqt pyqt4 adblock


我正慢慢地在PyQt4中构建一个web browser,就像我正在摆脱它的速度一样.但是,我想将easylist.txt与它结合起来.我相信adblock使用它来阻止浏览器的http请求.

你会如何使用python / PyQt4进行操作?

[edit1]好的.我想我已经设置了Privoxy.我没有设置任何额外的过滤器,它似乎工作. PyQt4我尝试使用这样的样子

self.proxyIP = "127.0.0.1"  
self.proxyPORT= 8118  
proxy = QNetworkProxy()  
proxy.setType(QNetworkProxy.HttpProxy)  
proxy.setHostName(self.proxyIP)  
proxy.setPort(self.proxyPORT)  
QNetworkProxy.setApplicationProxy(proxy)

但是,这绝对没有什么,我无法理解文档,也找不到任何例子.

[edit2]我刚刚注意到,如果我将self.proxyIP更改为我的实际本地IP而不是127.0.0.1,则页面无法加载.所以有些事情正在发生.

解决方法:

我知道这是一个老问题,但我想我会尝试给碰巧碰到它的人找一个答案.你可以创建一个QNetworkAccessManager的子类并将它与https://github.com/atereshkin/abpy结合起来.有点像这样:

from PyQt4.QtNetwork import QNetworkAccessManager
from abpy import Filter
adblockFilter = Filter(file("easylist.txt"))
class MyNetworkAccessManager(QNetworkAccessManager):
    def createRequest(self, op, request, device=None):
        url = request.url().toString()
        doFilter = adblockFilter.match(url)
        if doFilter:
            return QNetworkAccessManager.createRequest(self, self.GetOperation, QNetworkRequest(QUrl()))
        else:
            QNetworkAccessManager.createRequest(self, op, request, device)
myNetworkAccessManager = MyNetworkAccessManager()

之后,在所有QWebView实例上设置以下内容,或者创建QWebView的子类:

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

希望这可以帮助!

标签:python,pyqt,pyqt4,adblock
来源: https://codeday.me/bug/20190522/1151811.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有