Найти - Пользователи
Полная версия: Установка прокси для QtWebKit.QWebView
Начало » Python для новичков » Установка прокси для QtWebKit.QWebView
1 2
dima2881
Сейчас делаю вот так, но страница не загружается вообще
import sys
from PyQt4 import QtCore, QtGui, QtWebKit
from PyQt4 import QtNetwork
def progress(i):
    print('\r{}%'.format(i), end='')
    if i == 100:
        print()
def load_complete():
    print(web.url())
app = QtGui.QApplication(sys.argv)
proxy = QtNetwork.QNetworkProxy()
proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
proxy.setHostName('134.228.156.127')
proxy.setPort(19380)
QtNetwork.QNetworkProxy.setApplicationProxy(proxy)
web = QtWebKit.QWebView()
web.load(QtCore.QUrl("http://2ip.ru"))
web.loadFinished.connect(load_complete)
web.loadProgress.connect(progress)
web.show()
sys.exit(app.exec_())
Rodegast
Прокси подключается не ко всему приложению, а только к вебстранице. Т.е. должно быть как-то так:
class NetworkAccessManager(QtNetwork.QNetworkAccessManager):
    def __init__(self, *arg, **args):
        QtNetwork.QNetworkAccessManager.__init__(self, *arg, **args)
        proxy = QtNetwork.QNetworkProxy(QtNetwork.QNetworkProxy.HttpProxy)
        ....
        self.setProxy(proxy)
.....
class WebPage(QtWebKit.QWebPage):
    def __init__(self, *arg, **args):
        QtWebKit.QWebPage.__init__(self, *arg, **args)
        netManager = NetworkAccessManager()
        self.setNetworkAccessManager(netManager)
        .....
......
class WebView(QtWebKit.QWebView):
    def __init__(self, *arg, **args):
        QtWebKit.QWebView.__init__(self, *arg, **args)
        Page = WebPage()
        self.setPage(Page)
        .....
web.show()
sys.exit(app.exec_())
dima2881
Rodegast
Похоже я что-то упустил, потому что сейчас страница грузится, но прокся не применяться.
import sys
from PyQt4 import QtCore, QtGui, QtWebKit
from PyQt4 import QtNetwork
class NetworkAccessManager(QtNetwork.QNetworkAccessManager):
    def __init__(self, *arg, **args):
        QtNetwork.QNetworkAccessManager.__init__(self, *arg, **args)
        proxy = QtNetwork.QNetworkProxy(QtNetwork.QNetworkProxy.HttpProxy)
        proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
        proxy.setHostName('134.228.156.127')
        proxy.setPort(19380)
        self.setProxy(proxy)
class WebPage(QtWebKit.QWebPage):
    def __init__(self, *arg, **args):
        QtWebKit.QWebPage.__init__(self, *arg, **args)
        netManager = NetworkAccessManager()
        self.setNetworkAccessManager(netManager)
class WebView(QtWebKit.QWebView):
    def __init__(self, *arg, **args):
        QtWebKit.QWebView.__init__(self, *arg, **args)
        Page = WebPage()
        self.setPage(Page)
        
app = QtGui.QApplication(sys.argv)
web = QtWebKit.QWebView()
web.load(QtCore.QUrl('http://2ip.ru'))
web.show()
sys.exit(app.exec_())
Rodegast
Да это я немного ошибся. Надо:
web = QtWebKit.QWebView()
web.setPage(WebPage())
Класс WebView можно удалить.
dima2881
Сейчас страница опять вообще не грузится
import sys
from PyQt4 import QtCore, QtGui, QtWebKit
from PyQt4 import QtNetwork
class NetworkAccessManager(QtNetwork.QNetworkAccessManager):
    def __init__(self, *arg, **args):
        QtNetwork.QNetworkAccessManager.__init__(self, *arg, **args)
        proxy = QtNetwork.QNetworkProxy(QtNetwork.QNetworkProxy.HttpProxy)
        proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
        proxy.setHostName('94.23.166.246')
        proxy.setPort(60088)
        self.setProxy(proxy)
class WebPage(QtWebKit.QWebPage):
    def __init__(self, *arg, **args):
        QtWebKit.QWebPage.__init__(self, *arg, **args)
        netManager = NetworkAccessManager()
        self.setNetworkAccessManager(netManager)
app = QtGui.QApplication(sys.argv)
web = QtWebKit.QWebView()
web.setPage(WebPage())
web.load(QtCore.QUrl('http://ya.ru'))
web.show()
sys.exit(app.exec_())
Rodegast
Удали
proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
пользователь и пароль от прокси не нужен?
dima2881
Rodegast
нет, это обычная прокся найденная на просторах сети, в обычном браузере проверял, она работает
dima2881
Rodegast
Удали
Удалил и все равно не работает.
Rodegast
> это обычная прокся найденная на просторах сети, в обычном браузере проверял, она работает

Не работает твоя прокся. Сейчас c конкэррора я через неё подключится не смог.
dima2881
Rodegast
Эмм, ну у меня она работает, а ты какой тип прокси выбирал? Она socks5
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB