Пример #1
0
def proxy_from_url(url):
    """Create a QNetworkProxy from QUrl and a proxy type.

    Args:
        url: URL of a proxy (possibly with credentials).

    Return:
        New QNetworkProxy.
    """
    if not url.isValid():
        raise InvalidUrlError(url)

    scheme = url.scheme()
    if scheme in ['pac+http', 'pac+https', 'pac+file']:
        return pac.PACFetcher(url)

    types = {
        'http': QNetworkProxy.HttpProxy,
        'socks': QNetworkProxy.Socks5Proxy,
        'socks5': QNetworkProxy.Socks5Proxy,
        'direct': QNetworkProxy.NoProxy,
    }
    if scheme not in types:
        raise InvalidProxyTypeError(scheme)

    proxy = QNetworkProxy(types[scheme], url.host())

    if url.port() != -1:
        proxy.setPort(url.port())
    if url.userName():
        proxy.setUser(url.userName())
    if url.password():
        proxy.setPassword(url.password())
    return proxy
Пример #2
0
def proxy_from_url(url: QUrl) -> Union[QNetworkProxy, pac.PACFetcher]:
    """Create a QNetworkProxy from QUrl and a proxy type.

    Args:
        url: URL of a proxy (possibly with credentials).

    Return:
        New QNetworkProxy.
    """
    ensure_valid(url)

    scheme = url.scheme()
    if scheme in ['pac+http', 'pac+https', 'pac+file']:
        fetcher = pac.PACFetcher(url)
        fetcher.fetch()
        return fetcher

    types = {
        'http': QNetworkProxy.HttpProxy,
        'socks': QNetworkProxy.Socks5Proxy,
        'socks5': QNetworkProxy.Socks5Proxy,
        'direct': QNetworkProxy.NoProxy,
    }
    if scheme not in types:
        raise InvalidProxyTypeError(scheme)

    proxy = QNetworkProxy(types[scheme], url.host())

    if url.port() != -1:
        proxy.setPort(url.port())
    if url.userName():
        proxy.setUser(url.userName())
    if url.password():
        proxy.setPassword(url.password())
    return proxy
Пример #3
0
def proxy_from_url(url):
    """
    Create a QNetworkProxy from an url.
    """
    if not isinstance(url, QUrl):
        url = QUrl.fromUserInput(url)

    if not url.isValid():
        raise RuntimeError("Invalid url %s" % url.toString())

    scheme = url.scheme()

    types = {
        'http': QNetworkProxy.HttpProxy,
        'socks': QNetworkProxy.Socks5Proxy,
        'socks5': QNetworkProxy.Socks5Proxy,
        'direct': QNetworkProxy.NoProxy,
    }
    if scheme not in types:
        raise RuntimeError("scheme %s for url is invalid" % scheme)

    proxy = QNetworkProxy(types[scheme], url.host())

    if url.port() != -1:
        proxy.setPort(url.port())
    if url.userName():
        proxy.setUser(url.userName())
    if url.password():
        proxy.setPassword(url.password())
    return proxy
Пример #4
0
 def configure_proxy(self):
     proxy = urlparse(
         os.environ.get('http_proxy') or os.environ.get('HTTP_PROXY'))
     if proxy.hostname is not None and proxy.port is not None:
         q_network_proxy = QNetworkProxy(QNetworkProxy.HttpProxy,
                                         proxy.hostname, proxy.port)
         if proxy.username is not None:
             q_network_proxy.setUser(proxy.username)
         if proxy.password is not None:
             q_network_proxy.setPassword(proxy.password)
         QNetworkProxy.setApplicationProxy(q_network_proxy)
Пример #5
0
def set_proxy(string_proxy):
    proxy = QNetworkProxy()
    urlinfo = urlparse.urlparse(string_proxy)
    if urlinfo.scheme == 'socks5':
        proxy.setType(QNetworkProxy.Socks5Proxy)
    elif urlinfo.scheme == 'http':
        proxy.setType(QNetworkProxy.HttpProxy)
    else:
        proxy.setType(QNetworkProxy.NoProxy)
    proxy.setHostName(urlinfo.hostname)
    proxy.setPort(urlinfo.port)
    proxy.setUser(urlinfo.username)
    proxy.setPassword(urlinfo.password)
    QNetworkProxy.setApplicationProxy(proxy)
Пример #6
0
 def configure_proxy(self):
     try:
       from urllib.parse import unquote
     except ImportError:
       from urllib import unquote
     url = os.environ.get('http_proxy') or os.environ.get('HTTP_PROXY') or ''
     url_decode = unquote(url)
     proxy = urlparse(url_decode)
     if proxy.hostname is not None and proxy.port is not None:
         q_network_proxy = QNetworkProxy(QNetworkProxy.HttpProxy, proxy.hostname, proxy.port)
         if proxy.username is not None:
             q_network_proxy.setUser(proxy.username)
         if proxy.password is not None:
             q_network_proxy.setPassword(proxy.password)
         QNetworkProxy.setApplicationProxy(q_network_proxy)
Пример #7
0
 def transform(self, value):
     if not value:
         return None
     elif value == 'system':
         return SYSTEM_PROXY
     elif value == 'none':
         return QNetworkProxy(QNetworkProxy.NoProxy)
     url = QUrl(value)
     typ = self.PROXY_TYPES[url.scheme()]
     proxy = QNetworkProxy(typ, url.host())
     if url.port() != -1:
         proxy.setPort(url.port())
     if url.userName():
         proxy.setUser(url.userName())
     if url.password():
         proxy.setPassword(url.password())
     return proxy
Пример #8
0
 def setProxy(self, enable, hostname, port, username, password):
     proxy = QNetworkProxy()
     if enable:
         proxy.setType(QNetworkProxy.HttpProxy)
         print("启动代理")
         print("主机名", hostname)
         print("端口", port)
         print("用户名", username)
         print("密码", password)
     else:
         proxy.setType(QNetworkProxy.NoProxy)
         print("取消代理")
     proxy.setHostName(hostname)
     proxy.setPort(port)
     proxy.setUser(username)
     proxy.setPassword(password)
     QNetworkProxy.setApplicationProxy(proxy)
Пример #9
0
                socket.disconnectFromHost()
            if proxy_socket.error() != QTcpSocket.RemoteHostClosedError:
                url = proxy_socket.property('url').toUrl()
                error_string = proxy_socket.errorString()

                if self.debug:
                    self.log.write('Error for %s %s\n\n' % (url, error_string))

            proxy_socket.deleteLater()


if __name__ == '__main__':
    app = QCoreApplication(sys.argv)

    server = Server()
    manager = QNetworkAccessManager()
    manager.finished.connect(server.stopServing)
    manager.finished.connect(app.quit)

    proxy = QNetworkProxy()
    proxy.setType(QNetworkProxy.HttpProxy)
    proxy.setHostName('127.0.0.1')
    proxy.setPort(server.port())
    proxy.setUser(server.username)
    proxy.setPassword(server.password)

    manager.setProxy(proxy)
    reply = manager.get(QNetworkRequest(QUrl('http://aws.amazon.com/')))

    sys.exit(app.exec_())
Пример #10
0
class MyWebView(QWebEngineView):
    def __init__(self, parent=None, acc=None):
        super().__init__()

        self.parent = parent
        self.session = acc.session
        self.user_id = acc.user_id
        self.chekLoadFinish = False
        self.progress = 0

        # Connect sql and get data
        os.chdir('/root/PycharmProjects/HearSheep')
        con = sql.connect(os.getcwd() + '/db/db.sqlite3')
        cur = con.cursor()

        with con:
            cur.execute('SELECT login, pass, token, proxy, user_agent FROM accaunt where user_id=?', (self.user_id,))
            row = cur.fetchone()
            self.login, self.password, self.token, proxy, user_agent = row

        con.close()

        # Path Cookies
        os.chdir('/root/PycharmProjects/HearSheep')
        pathCookies = '/root/PycharmProjects/HearSheep/cookies/' + str(self.user_id)

        if os.path.exists(pathCookies):
            pass
        else:
            os.chdir('/root/PycharmProjects/HearSheep/cookies')
            os.mkdir(str(self.user_id))
            pathCookies = '/root/PycharmProjects/HearSheep/cookies/' + str(self.user_id)

        # settings
        profile = self.page().profile()
        profile.setPersistentStoragePath(pathCookies)
        profile.setHttpUserAgent(user_agent)
        profile.setHttpAcceptLanguage("ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")

        urlinfo = parse.urlparse(proxy)
        self.proxy = QNetworkProxy()
        self.proxy.setType(QNetworkProxy.HttpProxy)
        self.proxy.setHostName(urlinfo.hostname)
        self.proxy.setPort(urlinfo.port)
        self.proxy.setUser(urlinfo.username)
        self.proxy.setPassword(urlinfo.password)
        QNetworkProxy.setApplicationProxy(self.proxy)
        self.page().proxyAuthenticationRequired.connect(self.handleProxyAuthReq)

        self.loadProgress.connect(self.setProgress)

        self.load(QtCore.QUrl('https://vk.com/'))
        self.auth()

    def handleProxyAuthReq(self, url, auth, proxyhost):
        auth.setUser(self.proxy.user())
        auth.setPassword(self.proxy.password())

    def setProgress(self, value):
        self.progress = value

    def waitForSignal(self):
        loop = QEventLoop()

        def work(value):
            print('loop', value)
            if value > 95:
                loop.quit()

        self.loadProgress.connect(work)
        loop.exec_()
        self.loadProgress.disconnect()
        time.sleep(2)
        return True

    def auth(self):
        self.waitForSignal()

        if self.page().url().url() == 'https://vk.com/' or self.page().url().url() == 'https://vk.com/index.php':
            page = self.page()
            page.runJavaScript(
                'document.querySelector("#index_email").value = "{}"'.format(self.login))
            page.runJavaScript(
                'document.querySelector("#index_pass").value = "{}"'.format(self.password))
            page.runJavaScript(
                'document.querySelector("#index_login_button").click()')

        print('auth complete')

    def joinTheChat(self, chat):
        number_chat, count_users, invite_link = chat
        print('connect to', invite_link)
        self.load(QtCore.QUrl(invite_link))
        print('waiting load inviting page')
        self.waitForSignal()

        page = self.page()
        page.runJavaScript(
            "document.querySelector('button.flat_button.round_button._im_join_chat.im-invitation--join').click()")

        print('waiting after clicking the button "connect"')
        self.waitForSignal()


        # Check the entry in the chat
        print('get dialogs')
        getUrl = UrlAPI(self.token)
        response = self.session.get(getUrl.messages.getDialogs(count=3), proxies=self.session.proxies)
        dialogs = json.loads(response.text)['response']['items']

        for dialog in dialogs:
            print(dialog)

            if dialog['message']['title'] == 'Читаем стихи':
                print('Find')
                os.chdir('/root/PycharmProjects/HearSheep')
                con = sql.connect(os.getcwd() + '/db/db.sqlite3')
                cur = con.cursor()

                with con:
                    cur.execute('INSERT INTO accaunt_chat(user_id,chat_id,number_chat) VALUES(?,?,?)',
                                (self.user_id, dialog['message']['chat_id'], number_chat))
                    cur.execute('UPDATE chat SET count_users=? WHERE number_chat=?', (count_users+1, number_chat))

                con.close()

                print('joined the chat')
                return True

        print("not joined the chat")
        return False

    def createChat(self):
        getUrl = UrlAPI(self.token)
        response = self.session.get(getUrl.messages.createChat(title='Читаем стихи'), proxies=self.session.proxies)
        jResponse = json.loads(response.text)

        if 'response' in jResponse:
            chat_id = jResponse['response']
            peer_id = 2000000000 + chat_id

            res = self.session.get(getUrl.messages.getInviteLink(peer_id=peer_id), proxies=self.session.proxies)
            jRes = json.loads(res.text)['response']
            invite_link = jRes['link']

            os.chdir('/root/PycharmProjects/HearSheep')
            con = sql.connect(os.getcwd() + '/db/db.sqlite3')
            cur = con.cursor()

            with con:
                cur.execute('INSERT INTO chat(number_chat,count_users,invite_link) VALUES (NULL,1,?)', (invite_link, ))
                cur.execute('SELECT number_chat FROM chat WHERE invite_link=?', (invite_link, ))
                row = cur.fetchone()
                number_chat = row[0]
                cur.execute('INSERT INTO accaunt_chat(user_id,chat_id,number_chat) VALUES (?,?,?)', (self.user_id, chat_id, number_chat))

            con.close()
            print('the chat created')
            return True

        print("the chat don't created")
        return False

    def sendMessage(self):

        page = self.page()
        page.runJavaScript(
            "document.getElementById('im_editable88230675').innerHTML = 'Йо!'")
        page.runJavaScript(
            "document.querySelector('button.im-send-btn.im-chat-input--send.im-send-btn_saudio._im_send.im-send-btn_audio').click()")
Пример #11
0
class MyWebView(QWebEngineView):
    def __init__(self, parent=None, user_id=None):
        super().__init__()

        self.parent = parent
        self.chekLoadFinish = False

        # Connect sql and get data
        os.chdir('/root/PycharmProjects/HearSheep')
        con = sql.connect(os.getcwd() + '/db/db.sqlite3')
        cur = con.cursor()

        with con:
            cur.execute(
                'SELECT login, pass, proxy, user_agent FROM accaunt where user_id=?',
                (user_id, ))
            row = cur.fetchone()
            self.login, self.password, proxy, user_agent = row

        con.close()

        #Path Cookies
        os.chdir('/root/PycharmProjects/HearSheep')
        pathCookies = '/root/PycharmProjects/HearSheep/cookies/' + str(user_id)

        if os.path.exists(pathCookies):
            pass
        else:
            os.chdir('/root/PycharmProjects/HearSheep/cookies')
            os.mkdir(str(user_id))
            pathCookies = '/root/PycharmProjects/HearSheep/cookies/' + str(
                user_id)

        # settings
        profile = self.page().profile()
        profile.setPersistentStoragePath(pathCookies)
        profile.setHttpUserAgent(user_agent)
        profile.setHttpAcceptLanguage("ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")

        urlinfo = parse.urlparse(proxy)
        self.proxy = QNetworkProxy()
        self.proxy.setType(QNetworkProxy.HttpProxy)
        self.proxy.setHostName(urlinfo.hostname)
        self.proxy.setPort(urlinfo.port)
        self.proxy.setUser(urlinfo.username)
        self.proxy.setPassword(urlinfo.password)
        QNetworkProxy.setApplicationProxy(self.proxy)

        #
        self.page().proxyAuthenticationRequired.connect(
            self.handleProxyAuthReq)
        self.loadStarted.connect(self.loadStart)
        self.loadFinished.connect(self.loadFinish)
        self.load(QtCore.QUrl('https://vk.com'))

    def handleProxyAuthReq(self, url, auth, proxyhost):
        auth.setUser(self.proxy.user())
        auth.setPassword(self.proxy.password())

    def loadStart(self):
        self.chekLoadFinish = False

    def loadFinish(self):
        self.chekLoadFinish = True

        if self.page().url().url() == 'https://vk.com/':
            self._auth()

    def _auth(self):
        page = self.page()
        page.runJavaScript(
            'document.querySelector("#index_email").value = "{}"'.format(
                self.login))
        page.runJavaScript(
            'document.querySelector("#index_pass").value = "{}"'.format(
                self.password))
        page.runJavaScript(
            'document.querySelector("#index_login_button").click()')