Вопрос

Я медленно строю веб- браузер в PyQt4 и мне нравится скорость, с которой я справляюсь с этим.Тем не менее, я хочу объединить easylist.txt с этим.Я полагаю, что adblock использует это, чтобы блокировать http-запросы браузера.

Как бы вы поступили по этому поводу, используя python / PyQt4?

[правка1] Хорошо.Я думаю, что я настроил 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)

Надеюсь, это поможет!

Другие советы

Это вопрос о веб-фильтрации?

Затем попробуйте использовать какой-нибудь внешний веб-прокси, для примера Privoxy (http://en.wikipedia.org/wiki/Privoxy).

Файл easylist.txt представляет собой простой текст, как показано здесь: http://adblockplus.mozdev.org/easylist/easylist.txt

строки , начинающиеся с [ а также !представляется комментарии, так что просто перебирать файл, и поиск нужной вещи в URL/запроса, в зависимости от начального символа строки в файле easylist.txt .

Privoxy - это твердое вещество.Однако, если вы хотите, чтобы он был полностью основан на API, ознакомьтесь с API веб-фильтрации BrightCloud также.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top