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
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
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
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)
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)
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)
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
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)
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_())
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()")
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()')