예제 #1
0
    def _graphql_request(self, query_hash, variables, settings={}):
        if not isinstance(query_hash, str):
            raise TypeError("'query_hash' must be str type")
        if not isinstance(variables, str):
            raise TypeError("'variables' must be str type")
        if not isinstance(settings, dict):
            raise TypeError("'settings' must be dict type")

        if not "params" in settings:
            settings["params"] = {"query_hash": query_hash}
        else:
            settings["params"]["query_hash"] = query_hash

        settings["params"]["variables"] = variables
        gis = "%s:%s" % (self._rhx_gis, variables)
        if not "headers" in settings:
            settings["headers"] = {
                "X-Instagram-GIS":
                hashlib.md5(gis.encode("utf-8")).hexdigest()
            }
        else:
            settings["headers"]["X-Instagram-GIS"] = hashlib.md5(
                gis.encode("utf-8")).hexdigest()
        settings["headers"]["X-Requested-With"] = "XMLHttpRequest"

        try:
            response = self._get_request(
                "https://www.instagram.com/graphql/query/", **settings)
            response.raise_for_status()
            return response
        except HTTPError as e:
            raise InternetException(e)
예제 #2
0
 def _post_request(self, *args, **kwargs):
     try:
         response = self._session.post(*args, **kwargs)
         response.raise_for_status()
         return response
     except HTTPError as e:
         raise InternetException(e)
예제 #3
0
 def _get_request(self, *args, **kwargs):
     try:
         print("args", args)
         print("kwargs", kwargs)
         response = self._session.get(*args, **kwargs)
         response.raise_for_status()
         return response
     except HTTPError as e:
         raise InternetException(e)