headersPRO
Type: <object>
It sets any HTTP header that will be passed along over the url.
The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://news.ycombinator.com' URL with 'headers' API parameter:
CLI Microlink API example
microlink https://news.ycombinator.com&headers.user-agent=googlebot&headers.accept-language=en-UScURL Microlink API example
curl -G "https://api.microlink.io" \
-d "url=https://news.ycombinator.com" \
-d "headers.user-agent=googlebot" \
-d "headers.accept-language=en-US"JavaScript Microlink API example
import mql from '@microlink/mql'
const { data } = await mql('https://news.ycombinator.com', {
headers: {
"user-agent": "googlebot",
"accept-language": "en-US"
}
})Python Microlink API example
import requests
url = "https://api.microlink.io/"
querystring = {
"url": "https://news.ycombinator.com",
"headers.user-agent": "googlebot",
"headers.accept-language": "en-US"
}
response = requests.get(url, params=querystring)
print(response.json())Ruby Microlink API example
require 'uri'
require 'net/http'
base_url = "https://api.microlink.io/"
params = {
url: "https://news.ycombinator.com",
headers.user-agent: "googlebot",
headers.accept-language: "en-US"
}
uri = URI(base_url)
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
response = http.request(request)
puts response.bodyPHP Microlink API example
<?php
$baseUrl = "https://api.microlink.io/";
$params = [
"url" => "https://news.ycombinator.com",
"headers.user-agent" => "googlebot",
"headers.accept-language" => "en-US"
];
$query = http_build_query($params);
$url = $baseUrl . '?' . $query;
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET"
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #: " . $err;
} else {
echo $response;
}Golang Microlink API example
package main
import (
"fmt"
"net/http"
"net/url"
"io"
)
func main() {
baseURL := "https://api.microlink.io"
u, err := url.Parse(baseURL)
if err != nil {
panic(err)
}
q := u.Query()
q.Set("url", "https://news.ycombinator.com")
q.Set("headers.user-agent", "googlebot")
q.Set("headers.accept-language", "en-US")
u.RawQuery = q.Encode()
req, err := http.NewRequest("GET", u.String(), nil)
if err != nil {
panic(err)
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}import mql from '@microlink/mql'
const { data } = await mql('https://news.ycombinator.com', {
headers: {
"user-agent": "googlebot",
"accept-language": "en-US"
}
})Passing headers must the way to authenticate a non-public target URL, providing the necessary headers to make it reachable for Microlink API.
One consideration to keep in mind is that values provided will be passed as query parameters, meaning anyone can see them since they are public.
In case you are treating with sensible headers (e.g.,
authorization
or cookie
) you can pass them as part of the request headers rather than query parameters.For doing that, pass the header with
x-api-header-* key prefix:curl -G https://api.microlink.io \
-d url=https://test-http-login.vercel.app \
-d screenshot=true \
-d embed=screenshot.url \
-H 'x-api-header-authorization: Basic YWRtaW46YWRtaW4='In that way, they will be not publicly exposed.