diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 0686fbf..7947788 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -11,6 +11,7 @@ Check closed issues as well, because your issue may have already been fixed. * **Last working FlareSolverr version**: * **Operating system**: * **Are you using Docker**: [yes/no] +* **FlareSolverr User-Agent (see log traces or / endpoint)**: * **Are you using a proxy or VPN?** [yes/no] * **Are you using Captcha Solver:** [yes/no] * **If using captcha solver, which one:** diff --git a/Dockerfile b/Dockerfile index 0ec22a3..7f8f03c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,14 @@ -FROM --platform=${TARGETPLATFORM:-linux/amd64} node:14-alpine3.14 +FROM --platform=${TARGETPLATFORM:-linux/amd64} node:16-alpine3.14 # Print build information ARG TARGETPLATFORM ARG BUILDPLATFORM RUN printf "I am running on ${BUILDPLATFORM:-linux/amd64}, building for ${TARGETPLATFORM:-linux/amd64}\n$(uname -a)\n" -# Install the web browser +# Install the web browser (package firefox-esr is available too) RUN apk update && \ - apk add --no-cache firefox-esr dumb-init + apk add --no-cache firefox dumb-init && \ + rm -Rf /var/cache # Copy FlareSolverr code USER node @@ -28,3 +29,6 @@ RUN npm install && \ EXPOSE 8191 ENTRYPOINT ["/usr/bin/dumb-init", "--"] CMD ["npm", "start"] + +# docker build -t flaresolverr:custom . +# docker run -p 8191:8191 -e LOG_LEVEL=debug flaresolverr:custom diff --git a/build-binaries.js b/build-binaries.js index c42c3b2..5524f49 100644 --- a/build-binaries.js +++ b/build-binaries.js @@ -26,7 +26,7 @@ const version = 'v' + require('./package.json').version; fsZipName: 'windows-x64', fsLicenseName: 'LICENSE.txt' } - // TODO: this is working but changes are required in sessions.ts to find chrome path + // todo: this is working but changes are required in sessions.ts to find chrome path // { // platform: 'mac', // version: 756035, diff --git a/src/providers/cloudflare.ts b/src/providers/cloudflare.ts index 51e97b6..80b76b1 100644 --- a/src/providers/cloudflare.ts +++ b/src/providers/cloudflare.ts @@ -102,7 +102,7 @@ export default async function resolveChallenge(url: string, page: Page, response // const captchaSolver = getCaptchaSolver() // if (captchaSolver) { - // // todo: get the params + // // to-do: get the params // log.info('Waiting to receive captcha token to bypass challenge...') // const token = await captchaSolver({ // url, @@ -110,7 +110,7 @@ export default async function resolveChallenge(url: string, page: Page, response // type: captchaType // }) // log.debug(`Token received: ${token}`); - // // todo: send the token + // // to-do: send the token // } // } else { // throw new Error('Captcha detected but no automatic solver is configured.'); diff --git a/src/services/sessions.ts b/src/services/sessions.ts index 4d22cb6..2e4617e 100644 --- a/src/services/sessions.ts +++ b/src/services/sessions.ts @@ -24,7 +24,7 @@ export interface SessionCreateOptions { oneTimeSession: boolean cookies?: SetCookie[], maxTimeout?: number - proxy?: any// TODO: use interface not any + proxy?: Proxy } const sessionCache: SessionsCache = {} @@ -120,12 +120,9 @@ export async function create(session: string, options: SessionCreateOptions): Pr log.debug('Launching web browser...') - // TODO: maybe access env variable? - // TODO: sometimes browser instances are created and not connected to correctly. - // how do we handle/quit those instances inside Docker? + // todo: the retries are required? let launchTries = 3 let browser: Browser; - while (0 <= launchTries--) { try { browser = await puppeteer.launch(puppeteerOptions) @@ -154,8 +151,6 @@ export function list(): string[] { return Object.keys(sessionCache) } -// todo: create a sessions.close that doesn't rm the userDataDir - export async function destroy(id: string): Promise{ if (id && sessionCache.hasOwnProperty(id)) { const { browser, userDataDir } = sessionCache[id]