Browserless · Arazzo Workflow

Browserless Unblock Then Render

Version 1.0.0

Bypass bot detection on a protected URL, then re-render its HTML content and a PDF using the unblocked content.

1 workflow 1 source API 1 provider
View Spec View on GitHub Headless BrowserBrowser InfrastructureWeb AutomationAI AgentsWeb ScrapingBrowserQLPuppeteerPlaywrightSeleniumCDPStealthCAPTCHA SolvingResidential ProxyPDF GenerationScreenshotsSmart ScrapeCrawlSearchMCPSession RecordingHybrid AutomationArazzoWorkflows

Provider

browserless

Workflows

unblock-then-render
Unblock a protected URL, then render its content and PDF reusing the cleared cookies.
Calls /chrome/unblock to clear bot detection and obtain cookies and HTML, then re-renders the page HTML via /chrome/content and a PDF via /chrome/pdf, passing the recovered cookies so the renders reuse the cleared session.
3 steps inputs: token, url outputs: pdf, renderedHtml, unblockedContent, unblockedScreenshot
1
unblockSite
{$sourceDescriptions.browserlessApi.url}#/paths/~1chrome~1unblock/post
Clear bot detection on the URL, returning the page cookies, HTML content, and a base64 full-page screenshot.
2
renderContent
{$sourceDescriptions.browserlessApi.url}#/paths/~1chrome~1content/post
Re-render the page HTML via /chrome/content, injecting the cookies recovered from the unblock step so the render reuses the cleared session.
3
generatePdf
{$sourceDescriptions.browserlessApi.url}#/paths/~1chrome~1pdf/post
Generate a PDF of the same URL, reusing the recovered cookies so the PDF reflects the unblocked page.

Source API Descriptions

Arazzo Workflow Specification

browserless-unblock-then-render-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Browserless Unblock Then Render
  summary: Bypass bot detection on a protected URL, then re-render its HTML content and a PDF using the unblocked content.
  description: >-
    A bot-detection-bypass pipeline. The workflow first calls /chrome/unblock to
    get past bot protection on the target URL, returning the unblocked HTML
    content, cookies, and a base64 screenshot. It then chains the recovered
    cookies into a /chrome/content render and a /chrome/pdf render of the same
    URL so subsequent renders reuse the session that already cleared detection.
    Every step spells out its token query parameter and JSON request body inline
    so the flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
sourceDescriptions:
- name: browserlessApi
  url: ../openapi/browserless-openapi.yml
  type: openapi
workflows:
- workflowId: unblock-then-render
  summary: Unblock a protected URL, then render its content and PDF reusing the cleared cookies.
  description: >-
    Calls /chrome/unblock to clear bot detection and obtain cookies and HTML,
    then re-renders the page HTML via /chrome/content and a PDF via /chrome/pdf,
    passing the recovered cookies so the renders reuse the cleared session.
  inputs:
    type: object
    required:
    - token
    - url
    properties:
      token:
        type: string
        description: The Browserless authorization token passed as a query parameter.
      url:
        type: string
        description: The URL of the protected site to unblock and render.
  steps:
  - stepId: unblockSite
    description: >-
      Clear bot detection on the URL, returning the page cookies, HTML content,
      and a base64 full-page screenshot.
    operationPath: '{$sourceDescriptions.browserlessApi.url}#/paths/~1chrome~1unblock/post'
    parameters:
    - name: token
      in: query
      value: $inputs.token
    requestBody:
      contentType: application/json
      payload:
        url: $inputs.url
        cookies: true
        content: true
        screenshot: true
        bestAttempt: true
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      cookies: $response.body#/cookies
      content: $response.body#/content
      screenshot: $response.body#/screenshot
  - stepId: renderContent
    description: >-
      Re-render the page HTML via /chrome/content, injecting the cookies
      recovered from the unblock step so the render reuses the cleared session.
    operationPath: '{$sourceDescriptions.browserlessApi.url}#/paths/~1chrome~1content/post'
    parameters:
    - name: token
      in: query
      value: $inputs.token
    requestBody:
      contentType: application/json
      payload:
        url: $inputs.url
        cookies: $steps.unblockSite.outputs.cookies
        bestAttempt: true
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      html: $response.body
  - stepId: generatePdf
    description: >-
      Generate a PDF of the same URL, reusing the recovered cookies so the PDF
      reflects the unblocked page.
    operationPath: '{$sourceDescriptions.browserlessApi.url}#/paths/~1chrome~1pdf/post'
    parameters:
    - name: token
      in: query
      value: $inputs.token
    requestBody:
      contentType: application/json
      payload:
        url: $inputs.url
        cookies: $steps.unblockSite.outputs.cookies
        bestAttempt: true
        options:
          printBackground: true
          format: A4
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      pdf: $response.body
  outputs:
    unblockedContent: $steps.unblockSite.outputs.content
    unblockedScreenshot: $steps.unblockSite.outputs.screenshot
    renderedHtml: $steps.renderContent.outputs.html
    pdf: $steps.generatePdf.outputs.pdf