Документация

Вступление

αScraper — API для парсинга. В зависимости от ваших задач, вы можете выбрать 2 варианта:

Основное о нашем сервисе:

Использование

У нас есть только 1 урл для запросов API

http://api.ascraper.com/crawl
GET-запрос
Возвращает ответ в JSON-формате
Для возврата результата запроса в HTML-формате, установите GET-параметр format=html
Поддерживает 3 GET параметра: userId=API_KEY, url и selector.
http://api.ascraper.com/crawl
POST-запрос
Поддерживает собственные заголовки, Cookie-файлы, сессии, javascript-рендеринг. Принимает и отвечает в JSON-формате

Пример

JSON

  curl "http://api.ascraper.com/crawl?userId=API_KEY&url=https://yandex.ru/internet/"
                

Result

{
   "status":{
      "code":"OK"
   },
   "cookies":[

   ],
   "headers":{
      "Server":"gunicorn/19.9.0",
      "Access-Control-Allow-Origin":"*",
      "Access-Control-Allow-Credentials":"true",
      "Connection":"keep-alive",
      "Content-Length":"33",
      "Date":"Sat, 31 Oct 2020 16:19:39 GMT",
      "Content-Type":"application/json"
   },
   "html_source":"{\n  \"origin\": \"185.233.83.124\"\n}\n"
}
            
Если вам нужно вернуть только 1 селектор на странице добавьте jquery-style селектор в запрос &selector='SELECTOR'. Не забудьте применить css-селектору urlencode.

    
  curl "http://api.ascraper.com/crawl?userId=API_KEY&selector=title&url=https://google.com"
                

Результат

{
   "source":"[\"<title>Google</title>\"]",
   "status":{
      "code":"OK"
   },
   "cookies":[
      {
        ...
      }
   ],
   "headers":{
        ...
   }
}
            

Пример

Если вам нужно вернуть обычный HTML

Передайте параметр format=html


    
  curl "http://api.ascraper.com/crawl?userId=API_KEY&url=https://google.com&format=html"
                

Результат

                
<!doctype html>
<html itemscope="" itemtype="http://schema.org/WebPage" lang="ru">
   <head>
      <meta charset="UTF-8">
      <meta content="origin" name="referrer">
      <link href="/searchdomaincheck?format=opensearch" title="Поиск в Google" rel="search" type="application/opensearchdescription+xml">
      <link href="/manifest?pwa=webhp" crossorigin="use-credentials" rel="manifest">
              ...
            

Ответы

Наш сервис может посылать вам следующие ответы:


Собственные заголовки

Чтобы передать собственные заголовки используйте POST-запрос к API в следущем формате:

http://api.ascraper.com/crawl

POST-запрос

Пример


    
  curl -X POST -H "Content-Type: application/json" --data '{"url": "http://httpbin.org/headers","userId": "API_KEY","headers": [{"name" : "name", "value" : "value"}]}' 'http://api.ascraper.com/crawl'
                

Result

{
   "status":{
      "code":"OK"
   },
   "sessionId":"21798b55-153d-4ae8-b785-271c40f761ca",
   "cookies":[

   ],
   "headers":{
      "Server":"gunicorn/19.9.0",
      "Access-Control-Allow-Origin":"*",
      "Access-Control-Allow-Credentials":"true",
      "Connection":"keep-alive",
      "Content-Length":"485",
      "Date":"Sat, 31 Oct 2020 19:45:20 GMT",
      "Content-Type":"application/json"
   },
   "html_source":"{\n  \"headers\": {\n    \"Accept\": \"*/*\", \n    \"Host\": \"httpbin.org\", \n    \"Name\": \"value\", \n    \"User-Agent\": \"Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144\", \n    \"X-Amzn-Trace-Id\": \"Root=1-5f9dbed0-597dd69e27590a322779a228\", \n    \"X-B3-Parentspanid\": \"c15cd9bc743da160\", \n    \"X-B3-Sampled\": \"1\", \n    \"X-B3-Spanid\": \"a7c628a49b2b6db0\", \n    \"X-B3-Traceid\": \"5f9dbecf7a33412fae164ec446116fd9\"\n  }\n}\n"
}
            

Собственные Cookie-файлы

Чтобы передать собственные Cookie-файлы используйте POST-запрос к API в следущем формате:

http://api.ascraper.com/crawl

POST-запрос

Пример


    
  curl -X POST -H "Content-Type: application/json" --data '{"url": "http://httpbin.org/cookies","userId": "API_KEY","cookies": [{"name" : "name", "value" : "value"}]}' 'http://api.ascraper.com/crawl'
                

Результат

{
   "status":{
      "code":"OK"
   },
   "sessionId":"31d5efdf-069e-4bcc-98de-0e99eea024af",
   "cookies":[
      {
         "domain":".httpbin.org",
         "hostOnly":false,
         "httpOnly":false,
         "name":"name",
         "path":"/",
         "sameSite":"None",
         "secure":false,
         "session":false,
         "storeId":false,
         "value":"value",
         "id":null
      }
   ],
   "headers":{
      "Server":"gunicorn/19.9.0",
      "Access-Control-Allow-Origin":"*",
      "Access-Control-Allow-Credentials":"true",
      "Connection":"keep-alive",
      "Content-Length":"43",
      "Date":"Sat, 31 Oct 2020 19:51:44 GMT",
      "Content-Type":"application/json"
   },
   "html_source":"{\n  \"cookies\": {\n    \"name\": \"value\"\n  }\n}\n"
}
            

Сессии

По умолчанию мы меняем IP каждый запрос. Но если вам нужно переиспользовать IP или Cookie-файлы вы можете передать ID сессии (session_id), который мы возвращаем каждый POST-запрос к API http://api.ascraper.com/crawl

Пример


    
  curl -X POST -H "Content-Type: application/json" --data '{"url": "http://httpbin.org/cookies","userId": "API_KEY","cookies": [{"name" : "name", "value" : "value"}]}' 'http://api.ascraper.com/crawl'
  curl -X POST -H "Content-Type: application/json" --data '{"url": "http://httpbin.org/cookies","userId": "API_KEY","sessionId": "31d5efdf-069e-4bcc-98de-0e99eea024af"}' 'http://api.ascraper.com/crawl'
                

Результат

{
   "status":{
      "code":"OK"
   },
   "sessionId":"31d5efdf-069e-4bcc-98de-0e99eea024af"
}
            

Chrome-кластер

Если вам необходим настоящий браузер, чтобы получить содержимое страницы или javascript-рендеринг, установите параметр render=true. По умолчанию мы отключаем все css-файлы и изображения

Пример


    
  curl -X POST -H "Content-Type: application/json" --data '{"url": "http://httpbin.org/ip","userId": "API_KEY","render" : true}' 'http://api.ascraper.com/crawl'
                    
  curl "http://api.ascraper.com/crawl?userId=API_KEY&selector=title&url=https://google.com&render=true"
                

Результат

{
   "sessionId":"3caf3d06-cce2-4ba2-a7e0-03db4b65f8d4",
   "cookies":[

   ],
   "headers":{

   },
   "html_source":"<pre style=\"word-wrap: break-word; white-space: pre-wrap;\">{\n  \"origin\": \"172.19.0.1, 185.233.80.89\"\n}\n</pre>"
}
            

Proxy-режим

Также вы можете использовать все функции сервиса в режиме прокси. В этом режиме мы передадим все ваши параметры в наше API и вернем результат. Как и в обычном режиме API мы обрабатываем все запросы следущим образом:
200, 404 запросы - успешные запросы
500 - неуспешные запросы
429 - закончились лимиты

Вы можете использовать прокси для бинарного контента.

Вы можете передать следующие параметры в прокси:
- render
- session_id
- headers
- cookies

Передайте эти параметры в следующем формате:
ascraper;render=true;session_id=session@API_KEY:proxy.ascraper.com:8080

Заголовки и Cookie-файлы, которые вы передадите со своим запросом, мы также передадим в наше API.
Чтобы успешно использовать наше API в этом режиме ваш код должен быть сконфигурирован без проверки SSL-сертификатов (to not verify SSL certificates).