Make http get request.

        :param url:
        :param params:
        :param cache_cb: (optional) a function that taking requests.Response
            as input, and returns a bool flag, indicate whether should update the cache.
        :param cache_expire: (optional).
        :param kwargs: optional arguments.

def get(self,
            url,
            params=None,
            cache_cb=None,
            **kwargs):
        """
        Make http get request.

        :param url:
        :param params:
        :param cache_cb: (optional) a function that taking requests.Response
            as input, and returns a bool flag, indicate whether should update the cache.
        :param cache_expire: (optional).
        :param kwargs: optional arguments.
        """
        if self.use_random_user_agent:
            headers = kwargs.get("headers", dict())
            headers.update({Headers.UserAgent.KEY: Headers.UserAgent.random()})
            kwargs["headers"] = headers

        url = add_params(url, params)

        cache_consumed, value = self.try_read_cache(url)
        if cache_consumed:
            response = requests.Response()
            response.url = url
            response._content = value
        else:
            response = self.ses.get(url, **kwargs)

        if self.should_we_update_cache(response, cache_cb, cache_consumed):
            self.cache.set(
                url, response.content,
                expire=kwargs.get("cache_expire", self.cache_expire),
            )
        return response