gitextract_d22hbn5_/ ├── .editorconfig ├── .gitattributes ├── .github/ │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .php-cs-fixer.php ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bin/ │ └── add-git-hooks ├── composer.json ├── git-hooks/ │ └── pre-commit ├── phpstan.neon ├── phpunit.xml ├── src/ │ ├── Cache/ │ │ ├── CacheItem.php │ │ ├── Exceptions/ │ │ │ ├── MissingZlibExtensionException.php │ │ │ └── ReadingCacheFailedException.php │ │ └── FileCache.php │ ├── Crawler.php │ ├── HttpCrawler/ │ │ └── AnonymousHttpCrawlerBuilder.php │ ├── HttpCrawler.php │ ├── Input.php │ ├── Io.php │ ├── Loader/ │ │ ├── Http/ │ │ │ ├── Browser/ │ │ │ │ ├── Screenshot.php │ │ │ │ └── ScreenshotConfig.php │ │ │ ├── Cache/ │ │ │ │ └── RetryManager.php │ │ │ ├── Cookies/ │ │ │ │ ├── Cookie.php │ │ │ │ ├── CookieJar.php │ │ │ │ ├── Date.php │ │ │ │ └── Exceptions/ │ │ │ │ └── InvalidCookieException.php │ │ │ ├── Exceptions/ │ │ │ │ └── LoadingException.php │ │ │ ├── HeadlessBrowserLoaderHelper.php │ │ │ ├── HttpLoader.php │ │ │ ├── Messages/ │ │ │ │ └── RespondedRequest.php │ │ │ ├── Politeness/ │ │ │ │ ├── RetryErrorResponseHandler.php │ │ │ │ ├── RobotsTxtHandler.php │ │ │ │ ├── Throttler.php │ │ │ │ └── TimingUnits/ │ │ │ │ └── MultipleOf.php │ │ │ └── ProxyManager.php │ │ ├── Loader.php │ │ └── LoaderInterface.php │ ├── Logger/ │ │ ├── CliLogger.php │ │ └── PreStepInvocationLogger.php │ ├── Output.php │ ├── Result.php │ ├── Steps/ │ │ ├── BaseStep.php │ │ ├── Csv.php │ │ ├── Dom/ │ │ │ ├── DomDocument.php │ │ │ ├── HtmlDocument.php │ │ │ ├── HtmlElement.php │ │ │ ├── Node.php │ │ │ ├── NodeList.php │ │ │ ├── XmlDocument.php │ │ │ └── XmlElement.php │ │ ├── Dom.php │ │ ├── Exceptions/ │ │ │ └── PreRunValidationException.php │ │ ├── Filters/ │ │ │ ├── AbstractFilter.php │ │ │ ├── ArrayFilter.php │ │ │ ├── ClosureFilter.php │ │ │ ├── ComparisonFilter.php │ │ │ ├── Enums/ │ │ │ │ ├── ComparisonFilterRule.php │ │ │ │ ├── StringFilterRule.php │ │ │ │ ├── StringLengthFilterRule.php │ │ │ │ └── UrlFilterRule.php │ │ │ ├── Filter.php │ │ │ ├── FilterInterface.php │ │ │ ├── Filterable.php │ │ │ ├── NegatedFilter.php │ │ │ ├── StringFilter.php │ │ │ ├── StringLengthFilter.php │ │ │ └── UrlFilter.php │ │ ├── Group.php │ │ ├── Html/ │ │ │ ├── CssSelector.php │ │ │ ├── DomQuery.php │ │ │ ├── Exceptions/ │ │ │ │ └── InvalidDomQueryException.php │ │ │ ├── GetLink.php │ │ │ ├── GetLinks.php │ │ │ ├── MetaData.php │ │ │ ├── SchemaOrg.php │ │ │ ├── SelectorTarget.php │ │ │ └── XPathQuery.php │ │ ├── Html.php │ │ ├── Json.php │ │ ├── Loading/ │ │ │ ├── GetSitemapsFromRobotsTxt.php │ │ │ ├── Http/ │ │ │ │ ├── AbstractPaginator.php │ │ │ │ ├── Browser/ │ │ │ │ │ └── BrowserAction.php │ │ │ │ ├── Document.php │ │ │ │ ├── Paginate.php │ │ │ │ ├── Paginator.php │ │ │ │ └── Paginators/ │ │ │ │ ├── QueryParams/ │ │ │ │ │ ├── AbstractQueryParamManipulator.php │ │ │ │ │ ├── Decrementor.php │ │ │ │ │ ├── Incrementor.php │ │ │ │ │ └── QueryParamManipulator.php │ │ │ │ ├── QueryParamsPaginator.php │ │ │ │ ├── SimpleWebsitePaginator.php │ │ │ │ └── StopRules/ │ │ │ │ ├── Contains.php │ │ │ │ ├── IsEmptyInDom.php │ │ │ │ ├── IsEmptyInHtml.php │ │ │ │ ├── IsEmptyInJson.php │ │ │ │ ├── IsEmptyInXml.php │ │ │ │ ├── IsEmptyResponse.php │ │ │ │ ├── NotContains.php │ │ │ │ ├── PaginatorStopRules.php │ │ │ │ └── StopRule.php │ │ │ ├── Http.php │ │ │ ├── HttpBase.php │ │ │ ├── HttpCrawl.php │ │ │ └── LoadingStep.php │ │ ├── Refiners/ │ │ │ ├── AbstractRefiner.php │ │ │ ├── DateTime/ │ │ │ │ └── DateTimeFormat.php │ │ │ ├── DateTimeRefiner.php │ │ │ ├── Html/ │ │ │ │ └── RemoveFromHtml.php │ │ │ ├── HtmlRefiner.php │ │ │ ├── RefinerInterface.php │ │ │ ├── String/ │ │ │ │ ├── AbstractStringRefiner.php │ │ │ │ ├── StrAfterFirst.php │ │ │ │ ├── StrAfterLast.php │ │ │ │ ├── StrBeforeFirst.php │ │ │ │ ├── StrBeforeLast.php │ │ │ │ ├── StrBetweenFirst.php │ │ │ │ ├── StrBetweenLast.php │ │ │ │ └── StrReplace.php │ │ │ ├── StringRefiner.php │ │ │ ├── Url/ │ │ │ │ ├── AbstractUrlRefiner.php │ │ │ │ ├── WithFragment.php │ │ │ │ ├── WithHost.php │ │ │ │ ├── WithPath.php │ │ │ │ ├── WithPort.php │ │ │ │ ├── WithQuery.php │ │ │ │ ├── WithScheme.php │ │ │ │ └── WithoutPort.php │ │ │ └── UrlRefiner.php │ │ ├── Sitemap/ │ │ │ └── GetUrlsFromSitemap.php │ │ ├── Sitemap.php │ │ ├── Step.php │ │ ├── StepInterface.php │ │ ├── StepOutputType.php │ │ └── Xml.php │ ├── Stores/ │ │ ├── JsonFileStore.php │ │ ├── SimpleCsvFileStore.php │ │ ├── Store.php │ │ └── StoreInterface.php │ ├── UserAgents/ │ │ ├── BotUserAgent.php │ │ ├── BotUserAgentInterface.php │ │ ├── UserAgent.php │ │ └── UserAgentInterface.php │ └── Utils/ │ ├── Gzip.php │ ├── HttpHeaders.php │ ├── OutputTypeHelper.php │ ├── RequestKey.php │ └── TemplateString.php └── tests/ ├── Cache/ │ ├── CacheItemTest.php │ ├── FileCacheTest.php │ └── _cachefilecontent ├── CrawlerTest.php ├── HttpCrawler/ │ └── AnonymousHttpCrawlerBuilderTest.php ├── IoTest.php ├── Loader/ │ ├── Http/ │ │ ├── Browser/ │ │ │ └── ScreenshotConfigTest.php │ │ ├── Cache/ │ │ │ └── RetryManagerTest.php │ │ ├── Cookies/ │ │ │ ├── CookieJarTest.php │ │ │ ├── CookieTest.php │ │ │ └── DateTest.php │ │ ├── HeadlessBrowserLoaderHelperTest.php │ │ ├── HttpLoaderPolitenessTest.php │ │ ├── HttpLoaderTest.php │ │ ├── Messages/ │ │ │ └── RespondedRequestTest.php │ │ ├── Politeness/ │ │ │ ├── RobotsTxtHandlerTest.php │ │ │ ├── ThrottlerTest.php │ │ │ └── TimingUnits/ │ │ │ └── MultipleOfTest.php │ │ └── ProxyManagerTest.php │ └── LoaderTest.php ├── Logger/ │ ├── CliLoggerTest.php │ └── PreStepInvocationLoggerTest.php ├── Pest.php ├── ResultTest.php ├── Steps/ │ ├── BaseStepTest.php │ ├── CsvTest.php │ ├── Dom/ │ │ ├── HtmlDocumentTest.php │ │ ├── HtmlElementTest.php │ │ ├── NodeListTest.php │ │ ├── NodeTest.php │ │ ├── XmlDocumentTest.php │ │ ├── XmlElementTest.php │ │ └── _Stubs/ │ │ ├── HtmlNodeStub.php │ │ └── XmlNodeStub.php │ ├── DomTest.php │ ├── Filters/ │ │ ├── ArrayFilterTest.php │ │ ├── ClosureFilterTest.php │ │ ├── ComparisonFilterTest.php │ │ ├── Enums/ │ │ │ ├── ComparisonFilterRuleTest.php │ │ │ ├── StringFilterRuleTest.php │ │ │ ├── StringLengthFilterRuleTest.php │ │ │ └── UrlFilterRuleTest.php │ │ ├── FilterTest.php │ │ ├── NegatedFilterTest.php │ │ ├── StringFilterTest.php │ │ ├── StringLengthFilterTest.php │ │ └── UrlFilterTest.php │ ├── GroupTest.php │ ├── Html/ │ │ ├── CssSelectorTest.php │ │ ├── Exceptions/ │ │ │ └── InvalidDomQueryExceptionTest.php │ │ ├── GetLinkTest.php │ │ ├── GetLinksTest.php │ │ ├── MetaDataTest.php │ │ ├── SchemaOrgTest.php │ │ └── XPathQueryTest.php │ ├── HtmlTest.php │ ├── JsonTest.php │ ├── Loading/ │ │ ├── GetSitemapsFromRobotsTxtTest.php │ │ ├── Http/ │ │ │ ├── DocumentTest.php │ │ │ └── Paginators/ │ │ │ ├── AbstractPaginatorTest.php │ │ │ ├── QueryParams/ │ │ │ │ ├── AbstractQueryParamManipulatorTest.php │ │ │ │ ├── DecrementorTest.php │ │ │ │ └── IncrementorTest.php │ │ │ ├── QueryParamsPaginatorTest.php │ │ │ ├── SimpleWebsitePaginatorTest.php │ │ │ └── StopRules/ │ │ │ ├── ContainsTest.php │ │ │ ├── IsEmptyInHtmlTest.php │ │ │ ├── IsEmptyInJsonTest.php │ │ │ ├── IsEmptyInXmlTest.php │ │ │ ├── IsEmptyResponseTest.php │ │ │ └── NotContainsTest.php │ │ ├── HttpTest.php │ │ └── LoadingStepTest.php │ ├── Refiners/ │ │ ├── AbstractRefinerTest.php │ │ ├── DateTime/ │ │ │ └── DateTimeFormatTest.php │ │ ├── Html/ │ │ │ └── RemoveFromHtmlTest.php │ │ ├── String/ │ │ │ ├── AfterFirstTest.php │ │ │ ├── AfterLastTest.php │ │ │ ├── BeforeFirstTest.php │ │ │ ├── BeforeLastTest.php │ │ │ ├── BetweenFirstTest.php │ │ │ ├── BetweenLastTest.php │ │ │ └── ReplaceTest.php │ │ └── Url/ │ │ ├── WithFragmentTest.php │ │ ├── WithHostTest.php │ │ ├── WithPathTest.php │ │ ├── WithPortTest.php │ │ ├── WithQueryTest.php │ │ ├── WithSchemeTest.php │ │ └── WithoutPortTest.php │ ├── Sitemap/ │ │ └── GetUrlsFromSitemapTest.php │ ├── StepTest.php │ ├── XmlTest.php │ └── _Files/ │ ├── Csv/ │ │ ├── basic.csv │ │ ├── enclosure.csv │ │ ├── escape.csv │ │ ├── separator.csv │ │ └── with-column-headlines.csv │ ├── Html/ │ │ ├── basic.html │ │ ├── bookstore.html │ │ └── event.html │ └── Xml/ │ ├── bookstore.xml │ ├── events.xml │ └── rss-with-bom.xml ├── Stores/ │ ├── JsonFileStoreTest.php │ ├── SimpleCsvFileStoreTest.php │ └── _files/ │ └── .gitkeep ├── UserAgents/ │ ├── BotUserAgentTest.php │ └── UserAgentTest.php ├── Utils/ │ ├── GzipTest.php │ ├── HttpHeadersTest.php │ ├── OutputTypeHelperTest.php │ ├── RequestKeyTest.php │ └── TemplateStringTest.php ├── _Integration/ │ ├── GroupTest.php │ ├── Http/ │ │ ├── CharsetTest.php │ │ ├── CrawlingTest.php │ │ ├── ErrorResponsesTest.php │ │ ├── GzipTest.php │ │ ├── HeadlessBrowserTest.php │ │ ├── Html/ │ │ │ ├── PaginatedListingTest.php │ │ │ └── SimpleListingTest.php │ │ ├── PaginationTest.php │ │ ├── ProxyingTest.php │ │ ├── PublisherExampleTest.php │ │ ├── QueryParamPaginationTest.php │ │ ├── RedirectTest.php │ │ ├── RequestParamsFromInputTest.php │ │ ├── RetryErrorResponsesTest.php │ │ ├── RobotsTxtTest.php │ │ └── TimeoutTest.php │ ├── ProxyServer.php │ ├── Server.php │ └── _Server/ │ ├── BlogPostWithJsonLd.php │ ├── BrokenMimeTypeRss.php │ ├── BrowserActions/ │ │ ├── ClickAndWaitForReload.php │ │ ├── EvaluateAndWaitForReload.php │ │ ├── EvaluateAndWaitForReloadReloaded.php │ │ ├── Main.php │ │ └── Wait.php │ ├── Crawling.php │ ├── HelloWorld.php │ ├── JsGeneratedContent.php │ ├── NonUtf8.php │ ├── PageInitScript.php │ ├── PaginatedListing/ │ │ └── Detail.php │ ├── PaginatedListing.php │ ├── PrintCookie.php │ ├── PrintCookies.php │ ├── PrintHeaders.php │ ├── Publisher/ │ │ ├── AuthorDetailPage.php │ │ ├── AuthorsListPage.php │ │ ├── BookDetailPage.php │ │ └── EditionDetailPage.php │ ├── QueryParamPagination.php │ ├── RssFeed.php │ ├── ServiceUnavailable.php │ ├── SetCookie.php │ ├── SetCookieJs.php │ ├── SetDelayedCookieJs.php │ ├── SetMultipleCookiesJs.php │ ├── SimpleListing/ │ │ └── Detail.php │ ├── SimpleListing.php │ └── TooManyRequests.php ├── _Stubs/ │ ├── AbstractTestPaginator.php │ ├── Crawlers/ │ │ ├── DummyOne.php │ │ ├── DummyTwo/ │ │ │ ├── DummyTwoLoader.php │ │ │ ├── DummyTwoLogger.php │ │ │ └── DummyTwoUserAgent.php │ │ └── DummyTwo.php │ ├── DummyLogger.php │ ├── PhantasyLoader.php │ └── RespondedRequestChild.php └── _Temp/ ├── _cachedir/ │ └── .gitkeep └── _storagedir/ └── .gitkeep