protected static function createViaStreamWrapper($url, array $options = [])
    {
        $clientOptions = isset($options['client']) ? (array)$options['client'] : [];
        $opts = array_merge_recursive([
            'http' => [
                'method' => 'GET',
                'protocol_version' => 1.1,
                'user_agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.466.4 Safari/534.3',
                'max_redirects' => 10,
                'timeout' => 10.0,
                'header' => "Accept-language: en\r\n",
            ]
        ], $clientOptions);
        $context = stream_context_create($opts);
        $requestOptions = isset($options['request']) ? (array)$options['request'] : [];
        stream_context_set_params($context, $requestOptions);
        $response = @file_get_contents($url, false, $context);
        return self::createFromString($response);
    }