diff --git a/fbchat/client.py b/fbchat/client.py index 4698155..91f2b74 100644 --- a/fbchat/client.py +++ b/fbchat/client.py @@ -209,8 +209,18 @@ class Client(object): r = self._get(self.req_url.BASE) soup = bs(r.text, "lxml") - self.fb_dtsg = soup.find("input", {'name':'fb_dtsg'})['value'] - self.fb_h = soup.find("input", {'name':'h'})['value'] + + fb_dtsg_element = soup.find("input", {'name': 'fb_dtsg'}) + if fb_dtsg_element: + self.fb_dtsg = fb_dtsg_element['value'] + else: + self.fb_dtsg = re.search(r'name="fb_dtsg" value="(.*?)"', r.text).group(1) + + + fb_h_element = soup.find("input", {'name':'h'}) + if fb_h_element: + self.fb_h = fb_h_element['value'] + for i in self.fb_dtsg: self.ttstamp += str(ord(i)) self.ttstamp += '2' @@ -400,6 +410,11 @@ class Client(object): :return: True if the action was successful :rtype: bool """ + + if not hasattr(self, 'fb_h'): + h_r = self._post(self.req_url.MODERN_SETTINGS_MENU, {'pmid': '4'}) + self.fb_h = re.search(r'name=\\"h\\" value=\\"(.*?)\\"', h_r.text).group(1) + data = { 'ref': "mb", 'h': self.fb_h diff --git a/fbchat/utils.py b/fbchat/utils.py index 87eef26..c3fe933 100644 --- a/fbchat/utils.py +++ b/fbchat/utils.py @@ -121,6 +121,7 @@ class ReqUrl(object): GRAPHQL = "https://www.facebook.com/api/graphqlbatch/" ATTACHMENT_PHOTO = "https://www.facebook.com/mercury/attachments/photo/" EVENT_REMINDER = "https://www.facebook.com/ajax/eventreminder/create" + MODERN_SETTINGS_MENU = "https://www.facebook.com/bluebar/modern_settings_menu/" pull_channel = 0