From 42878ca9c8acf5a105f506d7ecee6a988480a9ad Mon Sep 17 00:00:00 2001 From: lemon <961222258@qq.com> Date: Mon, 17 Feb 2020 19:10:23 +0800 Subject: [PATCH] 修复上报bug --- core/core.py | 6 ++++-- core/monitor.py | 6 ++++-- lib/control_server.py | 2 +- lib/facebook.py | 39 +++++++++++++++++++++++++++++---------- lib/socket_.py | 7 ++++++- 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/core/core.py b/core/core.py index 14fda5b..20be681 100644 --- a/core/core.py +++ b/core/core.py @@ -21,7 +21,7 @@ monitor.version = settings.get_version() def server_replace(ws_url): '''新开一个socket尝试连接新地址,存储在临时变量里''' monitor._temp_socket = MessageSocketClient(connect_success, message_receive) - monitor._temp_socket.connect(ws_url, reconnect=False) # 失败不重试 + monitor._temp_socket.connect(ws_url, monitor._name, monitor._imei, reconnect=False) # 失败不重试 def message_receive(message): @@ -71,5 +71,7 @@ def connect_success(sock): def run(): socket = MessageSocketClient(connect_success, message_receive) - socket.connect(**settings.get_server()) + conf = settings.get_server() + conf.update({'url': monitor._host, 'name': monitor._name, 'uuid': monitor._imei}) + socket.connect(**conf) ioloop.IOLoop.instance().start() diff --git a/core/monitor.py b/core/monitor.py index 1826737..fcc0791 100644 --- a/core/monitor.py +++ b/core/monitor.py @@ -12,6 +12,7 @@ from concurrent.futures import ThreadPoolExecutor from munch import Munch +from conf import settings from core import callback, command from lib import control_server from lib.common import TaskStatus @@ -33,13 +34,14 @@ class Monitor(callback.CallBack): self._listenlist = dict() self._imei = Config.get('imei', lambda: uuid.uuid1().hex) self._name = Config.get('name', control_server.get_init_name) - self._host = None - self.version = '1.0.0' + self._host = Config.get('host', lambda: settings.get_server()['url']) + self.version = None self.executor = ThreadPoolExecutor(50, 'task_thread') self.init_config = {} def bind(self, socket): self._socket = socket + Config.set('host', self._socket.ws_url) def _auto_login(self): user_list = UserList.query(status=Status.ONLINE) diff --git a/lib/control_server.py b/lib/control_server.py index 69a2d9b..c4ad02d 100644 --- a/lib/control_server.py +++ b/lib/control_server.py @@ -30,7 +30,7 @@ def post_terminal_info(name, source_ws, num, version): data['ip'] = _host print(data) try: - r = requests.post(SERVER + '/post_terminal_info', data, timeout=1) + r = requests.post(SERVER + '/post_terminal_info', json=data, timeout=1) new_ws = r.json().get('data', {}).get('ws', source_ws) except: new_ws = source_ws diff --git a/lib/facebook.py b/lib/facebook.py index 2479866..27d5566 100644 --- a/lib/facebook.py +++ b/lib/facebook.py @@ -80,7 +80,7 @@ class PCState(State): user_id = get_user_id(session) - r = session.get(_util.prefix_url("/"),timeout=10) + r = session.get(_util.prefix_url("/"), timeout=10) b = parse_html.show_home_page(r.text) logout_menu = b.find('div', id='logoutMenu') @@ -451,15 +451,16 @@ class FacebookClient(Client): :return (ID,Name) ''' total_ids = [] - ids, names, gender = [], [], [] + res = [] while True: - if not (ids or names): - ids, names, gender = self._pymk_request(total_ids) + if not res: + res = self._pymk_request(total_ids) + ids = [x['fbid'] for x in res] total_ids.extend(ids) if not ids: return - sub = (ids.pop(0), names.pop(0), gender.pop(0)) + sub = res.pop(0) yield sub def _pymk_request(self, total_ids: list): @@ -527,17 +528,20 @@ class FacebookClient(Client): '''发出的加好友请求''' url = None empty = False - ids, names = [], [] + res = [] while True: - if not (ids or names): + if not res: if empty: return - ids, names, url = self._outgoingRequest(url) + res, url = self._outgoingRequest(url) if not url: empty = True - sub = (ids.pop(0), names.pop(0)) - yield sub + if not res: + empty = True + else: + sub = res.pop(0) + yield sub def _outgoingRequest(self, url=None, require_gender=True): if url: @@ -713,3 +717,18 @@ class FacebookClient(Client): def get_user_agent(self): return self._state._session.headers.get('User-Agent', random.choice(_util.USER_AGENTS)) + + def searchForUserByFilter(self, name=None, city=None): + url = 'https://www.facebook.com/search/top/' + data = {'q': 'angel', + 'ref': 'side_filter', + 'epa': 'FILTERS', + 'filters': 'eyJycF9sb2NhdGlvbiI6IntcIm5hbWVcIjpcImxvY2F0aW9uXCIsXCJhcmdzXCI6XCIxMDYyNjI4ODI3NDU2OThcIn0ifQ==', + 'ajaxpipe': '1', + 'ajaxpipe_token': 'AXjhI9q4VDQji6Ox', + 'quickling[version]': '1001720869;0;' + } + # f = furl.furl(url).add(data) + # print(f.url) + res=self._state._get('https://www.facebook.com/search/people/?q=angel&epa=FILTERS&filters=eyJjaXR5Ijoie1wibmFtZVwiOlwidXNlcnNfbG9jYXRpb25cIixcImFyZ3NcIjpcIjEwNjI2Mjg4Mjc0NTY5OFwifSJ9&ref=side_filter',{}) + print(res) \ No newline at end of file diff --git a/lib/socket_.py b/lib/socket_.py index 37522d5..9b1a74f 100644 --- a/lib/socket_.py +++ b/lib/socket_.py @@ -42,6 +42,8 @@ class WebSocketClient(object): self._connect_status = self.CONNECTING headers = httputil.HTTPHeaders({ + 'Clientname': self._clientname, + 'ClientUUID': self._clientuuid, 'Content-Type': APPLICATION_JSON, 'Origin': '*', }) @@ -145,10 +147,13 @@ class MessageSocketClient(WebSocketClient): self.server_replace(ws_url) self._later_handler['move_server'] = self._io_loop.call_later(random.randint(30, 30), self.auto_move_server) - def connect(self, url, reconnect=True, reconnect_interval=3): + def connect(self, url, name, uuid, reconnect=True, reconnect_interval=3): self.ws_url = url self.auto_reconnet = reconnect self.reconnect_interval = reconnect_interval + self._clientname=name + self._clientuuid=uuid + super(MessageSocketClient, self).connect(self.ws_url) def on_connection_success(self): -- libgit2 0.24.0