Claude Skill

web-unblocker

Bypasses anti-bot protections using Oxylabs Web Unblocker, an AI-powered proxy that handles fingerprinting, JavaScript rendering, and retries automatically. Use when the user needs to scrape protected websites, bypass CAPTCHAs, access blocked content, or when regular proxies fail

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download oxylabs-agent-skills-skills_web-unblocker-35eb792.zip · 3 KB
Part of oxylabs/agent-skills — 5 skills

Install

skills CLI npx skills add https://github.com/oxylabs/agent-skills/tree/main/skills/web-unblocker
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install oxylabs-agent-skills@llmmart
Git git clone https://github.com/oxylabs/agent-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole oxylabs/agent-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Oxylabs Web Unblocker

AI-powered proxy solution that automatically manages fingerprinting, headers, retries, and JavaScript rendering.

Endpoint

https://unblock.oxylabs.io:60000

Authentication

HTTP Basic Auth via proxy credentials:

curl -k -x "https://unblock.oxylabs.io:60000" \
  -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
  "https://example.com"

Quick Start

Basic request:

curl -k -x "https://unblock.oxylabs.io:60000" \
  -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
  "https://ip.oxylabs.io/headers"

With JavaScript rendering:

curl -k -x "https://unblock.oxylabs.io:60000" \
  -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
  -H "x-oxylabs-render: html" \
  "https://example.com/spa-page"

Headers

Header Description
x-oxylabs-render html for rendered HTML, png for raw PNG bytes; empty value disables automatic forced rendering
X-Oxylabs-Session-Id Reuse same IP across requests (any random string)
X-Oxylabs-Geo-Location Target country, city/state, ZIP/postcode, or coordinates
x-oxylabs-force-headers: 1 Enable custom header passthrough
x-oxylabs-force-cookies: 1 Enable custom cookie passthrough
X-Oxylabs-Successful-Status-Codes Define custom success codes to prevent retries
x-oxylabs-browser-instructions JSON-escaped browser actions; requires x-oxylabs-render: html

Session Persistence

Reuse the same IP across multiple requests:

curl -k -x "https://unblock.oxylabs.io:60000" \
  -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
  -H "X-Oxylabs-Session-Id: my-session-123" \
  "https://example.com/page1"

Geo-Location Targeting

curl -k -x "https://unblock.oxylabs.io:60000" \
  -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
  -H "X-Oxylabs-Geo-Location: Germany" \
  "https://example.com"

Use values such as Germany, 90210, California,United States, New York,New York,United States, or lat: 40.7128, lng: -74.0060, rad: 50.

Use normal HTTP methods and request bodies through the proxy; Web Unblocker supports both GET and POST.

When to Use Web Unblocker vs Regular Proxies

Scenario Use
Sites with anti-bot protection Web Unblocker
CAPTCHAs, fingerprint detection Web Unblocker
JavaScript-heavy SPAs Web Unblocker with x-oxylabs-render: html
Simple requests, no protection Regular Proxies
High volume, price sensitive Regular Proxies

Key Guidelines

  • Always use -k flag (or disable SSL verification) - the proxy uses its own certificates
  • Add x-oxylabs-render: html if experiencing empty content or low success rates; set client timeouts near 180 seconds for rendered requests
  • Check X-Oxylabs-Final-Url in response headers when redirects matter
  • Avoid adding custom unblocking headers that may interfere with the AI
  • Browser instruction header values must be JSON-escaped and compact; pair them with x-oxylabs-render: html

For code examples in Python, Node.js, PHP, Go, Java, and C#, see examples.md.

Files (agent-skills)
  • examples.md 4.7 KB
    # Web Unblocker Code Examples
    
    ## cURL
    
    **Basic request:**
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      "https://example.com"
    ```
    
    **With JavaScript rendering:**
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      -H "x-oxylabs-render: html" \
      "https://example.com/dynamic-page"
    ```
    
    **With geo-location and session:**
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      -H "X-Oxylabs-Geo-Location: United States" \
      -H "X-Oxylabs-Session-Id: session123" \
      "https://example.com"
    ```
    
    **Screenshot as PNG:**
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      -H "x-oxylabs-render: png" \
      "https://example.com" -o screenshot.png
    ```
    
    ## Python
    
    ```python
    import requests
    import os
    
    proxies = {
        "http": f"http://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000",
        "https": f"https://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000"
    }
    
    # Basic request
    response = requests.get(
        "https://example.com",
        proxies=proxies,
        verify=False  # Required for Web Unblocker
    )
    print(response.text)
    ```
    
    **With headers:**
    ```python
    import requests
    import os
    
    proxies = {
        "https": f"https://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000"
    }
    
    headers = {
        "x-oxylabs-render": "html",
        "X-Oxylabs-Geo-Location": "Germany"
    }
    
    response = requests.get(
        "https://example.com",
        proxies=proxies,
        headers=headers,
        verify=False
    )
    print(response.text)
    ```
    
    ## Node.js
    
    ```javascript
    const fetch = require("node-fetch");
    const HttpsProxyAgent = require("https-proxy-agent");
    
    const username = process.env.OXYLABS_USERNAME;
    const password = process.env.OXYLABS_PASSWORD;
    
    const agent = new HttpsProxyAgent(
      `https://${username}:${password}@unblock.oxylabs.io:60000`
    );
    
    // Disable TLS verification
    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
    
    async function fetchPage() {
      const response = await fetch("https://example.com", {
        agent,
        headers: {
          "x-oxylabs-render": "html"
        }
      });
      const html = await response.text();
      console.log(html);
    }
    
    fetchPage();
    ```
    
    ## PHP
    
    ```php
    <?php
    $username = getenv('OXYLABS_USERNAME');
    $password = getenv('OXYLABS_PASSWORD');
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://example.com");
    curl_setopt($ch, CURLOPT_PROXY, "https://unblock.oxylabs.io:60000");
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "x-oxylabs-render: html"
    ]);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    echo $response;
    ?>
    ```
    
    ## Go
    
    ```go
    package main
    
    import (
        "fmt"
        "io"
        "net/http"
        "net/url"
        "os"
        "crypto/tls"
    )
    
    func main() {
        username := os.Getenv("OXYLABS_USERNAME")
        password := os.Getenv("OXYLABS_PASSWORD")
    
        proxyURL, _ := url.Parse(fmt.Sprintf(
            "https://%s:%s@unblock.oxylabs.io:60000",
            username, password,
        ))
    
        transport := &http.Transport{
            Proxy: http.ProxyURL(proxyURL),
            TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
        }
    
        client := &http.Client{Transport: transport}
    
        req, _ := http.NewRequest("GET", "https://example.com", nil)
        req.Header.Set("x-oxylabs-render", "html")
    
        resp, _ := client.Do(req)
        defer resp.Body.Close()
    
        body, _ := io.ReadAll(resp.Body)
        fmt.Println(string(body))
    }
    ```
    
    ## Java
    
    ```java
    import java.net.*;
    import java.io.*;
    
    public class WebUnblocker {
        public static void main(String[] args) throws Exception {
            String username = System.getenv("OXYLABS_USERNAME");
            String password = System.getenv("OXYLABS_PASSWORD");
    
            Proxy proxy = new Proxy(Proxy.Type.HTTP,
                new InetSocketAddress("unblock.oxylabs.io", 60000));
    
            Authenticator.setDefault(new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password.toCharArray());
                }
            });
    
            URL url = new URL("https://example.com");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
            conn.setRequestProperty("x-oxylabs-render", "html");
    
            BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        }
    }
    ```
    
  • SKILL.md 3.4 KB
    ---
    name: web-unblocker
    description: Bypasses anti-bot protections using Oxylabs Web Unblocker, an AI-powered proxy that handles fingerprinting, JavaScript rendering, and retries automatically. Use when the user needs to scrape protected websites, bypass CAPTCHAs, access blocked content, or when regular proxies fail due to anti-bot measures.
    ---
    
    # Oxylabs Web Unblocker
    
    AI-powered proxy solution that automatically manages fingerprinting, headers, retries, and JavaScript rendering.
    
    ## Endpoint
    
    ```
    https://unblock.oxylabs.io:60000
    ```
    
    ## Authentication
    
    HTTP Basic Auth via proxy credentials:
    
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      "https://example.com"
    ```
    
    ## Quick Start
    
    **Basic request:**
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      "https://ip.oxylabs.io/headers"
    ```
    
    **With JavaScript rendering:**
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      -H "x-oxylabs-render: html" \
      "https://example.com/spa-page"
    ```
    
    ## Headers
    
    | Header | Description |
    |--------|-------------|
    | `x-oxylabs-render` | `html` for rendered HTML, `png` for raw PNG bytes; empty value disables automatic forced rendering |
    | `X-Oxylabs-Session-Id` | Reuse same IP across requests (any random string) |
    | `X-Oxylabs-Geo-Location` | Target country, city/state, ZIP/postcode, or coordinates |
    | `x-oxylabs-force-headers: 1` | Enable custom header passthrough |
    | `x-oxylabs-force-cookies: 1` | Enable custom cookie passthrough |
    | `X-Oxylabs-Successful-Status-Codes` | Define custom success codes to prevent retries |
    | `x-oxylabs-browser-instructions` | JSON-escaped browser actions; requires `x-oxylabs-render: html` |
    
    ## Session Persistence
    
    Reuse the same IP across multiple requests:
    
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      -H "X-Oxylabs-Session-Id: my-session-123" \
      "https://example.com/page1"
    ```
    
    ## Geo-Location Targeting
    
    ```bash
    curl -k -x "https://unblock.oxylabs.io:60000" \
      -U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \
      -H "X-Oxylabs-Geo-Location: Germany" \
      "https://example.com"
    ```
    
    Use values such as `Germany`, `90210`, `California,United States`, `New York,New York,United States`, or `lat: 40.7128, lng: -74.0060, rad: 50`.
    
    Use normal HTTP methods and request bodies through the proxy; Web Unblocker supports both GET and POST.
    
    ## When to Use Web Unblocker vs Regular Proxies
    
    | Scenario | Use |
    |----------|-----|
    | Sites with anti-bot protection | Web Unblocker |
    | CAPTCHAs, fingerprint detection | Web Unblocker |
    | JavaScript-heavy SPAs | Web Unblocker with `x-oxylabs-render: html` |
    | Simple requests, no protection | Regular Proxies |
    | High volume, price sensitive | Regular Proxies |
    
    ## Key Guidelines
    
    - Always use `-k` flag (or disable SSL verification) - the proxy uses its own certificates
    - Add `x-oxylabs-render: html` if experiencing empty content or low success rates; set client timeouts near 180 seconds for rendered requests
    - Check `X-Oxylabs-Final-Url` in response headers when redirects matter
    - Avoid adding custom unblocking headers that may interfere with the AI
    - Browser instruction header values must be JSON-escaped and compact; pair them with `x-oxylabs-render: html`
    
    For code examples in Python, Node.js, PHP, Go, Java, and C#, see [examples.md](examples.md).
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related