Scrapingbypass

コード例

API バージョンを選ぶ前に、対象と検証方式の互換性を確認してください。プロキシ IP とセッションを維持し、応答の状態と内容を確認してから解析します。

: "${CLOUDBYPASS_APIKEY:?Set CLOUDBYPASS_APIKEY first}"

curl --include --request GET --max-time 40 \
  "https://api.cloudbypass.com/category/memberships" \
  --header "x-cb-apikey: $CLOUDBYPASS_APIKEY" \
  --header "x-cb-host: opensea.io" \
  --header "x-cb-timeout: 30"
import os
import requests

response = requests.get(
    "https://api.cloudbypass.com/category/memberships",
    headers={
        "x-cb-apikey": os.environ["CLOUDBYPASS_APIKEY"],
        "x-cb-host": "opensea.io",
        "x-cb-timeout": "30",
    },
    timeout=40,
)
if response.headers.get("x-cb-status") != "ok":
    raise RuntimeError(response.text)

print(response.status_code)
print(response.text)
package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
    "time"
)

func main() {
    key := os.Getenv("CLOUDBYPASS_APIKEY")
    if key == "" { log.Fatal("Set CLOUDBYPASS_APIKEY first") }
    req, err := http.NewRequest("GET",
        "https://api.cloudbypass.com/category/memberships", nil)
    if err != nil { log.Fatal(err) }
    req.Header.Set("x-cb-apikey", key)
    req.Header.Set("x-cb-host", "opensea.io")
    req.Header.Set("x-cb-timeout", "30")

    client := &http.Client{Timeout: 40 * time.Second}
    res, err := client.Do(req)
    if err != nil { log.Fatal(err) }
    defer res.Body.Close()
    body, err := io.ReadAll(res.Body)
    if err != nil { log.Fatal(err) }
    if res.Header.Get("x-cb-status") != "ok" {
        log.Fatal(string(body))
    }
    fmt.Println(res.StatusCode)
    fmt.Println(string(body))
}
// Node.js 18+; no extra packages required.
async function main() {
  const key = process.env.CLOUDBYPASS_APIKEY;
  if (!key) throw new Error("Set CLOUDBYPASS_APIKEY first");

  const response = await fetch(
    "https://api.cloudbypass.com/category/memberships",
    {
      headers: {
        "x-cb-apikey": key,
        "x-cb-host": "opensea.io",
        "x-cb-timeout": "30",
      },
      signal: AbortSignal.timeout(40000),
    }
  );
  const body = await response.text();
  if (response.headers.get("x-cb-status") !== "ok") {
    throw new Error(body);
  }
  console.log(response.status);
  console.log(body);
}
main().catch(error => {
  console.error(error.message);
  process.exitCode = 1;
});
// Java 11+; save as Main.java.
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class Main {
    public static void main(String[] args) throws Exception {
        String key = System.getenv("CLOUDBYPASS_APIKEY");
        if (key == null || key.isBlank()) {
            throw new IllegalStateException("Set CLOUDBYPASS_APIKEY first");
        }
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10)).build();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.cloudbypass.com/category/memberships"))
            .timeout(Duration.ofSeconds(40))
            .header("x-cb-apikey", key)
            .header("x-cb-host", "opensea.io")
            .header("x-cb-timeout", "30")
            .GET().build();
        HttpResponse<String> response = client.send(
            request, HttpResponse.BodyHandlers.ofString());
        if (!response.headers().firstValue("x-cb-status").orElse("").equals("ok")) {
            throw new IllegalStateException(response.body());
        }
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

API ドキュメント