-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(captcha): add support for configurable capture type #2468
Conversation
I would make an option for the captcha capture method. Like this:
Probably should be configurable per store, and maybe allow to override via env. And maybe should rename For saving files maybe easier to use tmp dir. https://github.com/benjamingr/tmp-promise |
That's a good thought on making the capture type configurable, will
consider adding that.
Any changes in anticipation of adding another processing service (e.g. paid
captcha service) is premature. That refactoring can and should happen in
the PR that adds that support. I have no intention of adding it.
There are no captcha handlers in the messaging code. The captcha references
there can simply be renamed (aside from captcha.ts, which is meant as an
entry point to specific messengers for captcha messages), as they're
generic convenience methods for sending a DM and awaiting response. To that
end, also renaming from DM to Captcha payload is mostly not a good idea,
since those DM payloads are for... DMs.
…On Fri, Apr 30, 2021, 1:17 PM Alex Pantechovskis ***@***.***> wrote:
I would make an option for the captcha capture method. Like this:
async function saveCaptchaAsync(method: string, page: Page, store: Store): CaptchaPayload {
switch (method) {
case 'screenshot':
return saveCaptchaFileAsync(page, store);
case 'url' ...
}
}
Probably should be configurable per store, and maybe allow to override via
env.
And maybe should rename DMPayload to CaptchaPayload, for adding captcha
recognition services and libs (and I would extract all handlers from
messaging to e.g. captcha/handler). For some captcha (such as recaptcha
iirc) you may need to just extract some ID from HTML.
For saving files maybe easier to use tmp dir.
https://github.com/benjamingr/tmp-promise
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#2468 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACD4CIPEBU6PBY27P4DJS4LTLMF4LANCNFSM43Z2UPAQ>
.
|
I mean just extracting this streetmerchant/src/messaging/discord.ts Line 168 in 39fac90
it seems like it can be outside of this module since it's only using the more generic exported stuff. And then all possible captcha handlers will be nicely in one place making it more clear.
I can do it :) Also I saw this lib for Amazon captchas used in fairgame, but not sure if there are JS alternatives. Though handling Amazon captchas actually seems not very important, because there is no chance to buy a GPU manually, there are too many buying bots, and even without bots thousands of people monitor Amazon. |
Sorry @klords, I haven't gotten around to reviewing this. Is this PR in it's final state? |
02a0081
to
41a80d9
Compare
@jef no worries, similar boat here! I was able to allocate some time to this and incorporated some ideas from the feedback above. It's at a good point now, and other ideas can be vetted and/or included in a more applicable PR later on. |
Looking at this today @klords. Thanks for your patience and keeping this updated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, looks great. I really appreciate the hard work you've put into this topic. This has been a great addition.
}); | ||
|
||
config.browser.userAgent = await browser.userAgent(); | ||
browser = await launchBrowser(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
@@ -104,3 +105,11 @@ export async function getRandomUserAgent(): Promise<string> { | |||
logger.debug('user agent', {userAgent}); | |||
return userAgent; | |||
} | |||
|
|||
export function deleteFile(path: string) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion(non-blocking): As previously mentioned, it could be easily to put into a temp directory. But this is fine for now as I don't want to block this.
Changed to |
🤖 I have created a release *beep* *boop* --- ## [3.6.0](v3.5.0...v3.6.0) (2022-10-21) ### Features * add 3080ti ([#2598](#2598)) ([4cfbd37](4cfbd37)) * add 3080ti ([#2600](#2600)) ([51c9b3a](51c9b3a)) * add a few stores for spain ([#2646](#2646)) ([0b060e8](0b060e8)) * add alternate-fr, 3070ti, change alternate to alternate.de ([#2653](#2653)) ([8c7b8aa](8c7b8aa)) * add INCOGNITO to dotenv-example and volta support ([#2484](#2484)) ([b579052](b579052)) * add interactive captcha handler with Slack and Discord ([#2385](#2385)) ([409769e](409769e)) * add ldlc-italy and fixes ollo/hardware-planet ([#2903](#2903)) ([d4f4076](d4f4076)), closes [#2867](#2867) * add SCREENSHOT_DIR config option ([#2801](#2801)) ([fe99aa4](fe99aa4)) * add ubiquiti store and dream machine model. ([#3034](#3034)) ([87301fe](87301fe)) * add waitUntil and waitForSelctor to linksBuilder ([#2437](#2437)) ([cac7c20](cac7c20)) * **captcha:** add support for configurable capture type ([#2468](#2468)) ([6e614a2](6e614a2)) * change max price behavior ([9b02c36](9b02c36)) * color empty stores ([#2312](#2312)) ([bbfa808](bbfa808)) * **coolmod:** add linksBuilder and update selectors ([#2803](#2803)) ([f297e1d](f297e1d)) * **equippr:** add links builder ([#2795](#2795)) ([e631d80](e631d80)) * **gotify:** add priority option ([#2546](#2546)) ([32fe440](32fe440)) * **notification:** add gotify ([8f2de5d](8f2de5d)), closes [#2541](#2541) [#2536](https://github.com/jef/streetmerchant/issues/2536) * **notification:** add support for Free mobile ([#2285](#2285)) ([6be2e0d](6be2e0d)) * **notifications:** add apple push notifications ([#2077](#2077)) ([6b78b2e](6b78b2e)) * **pushover:** ability to specify device ([#2101](#2101)) ([d03aea0](d03aea0)) * **pushover:** add support for sound ([#2203](#2203)) ([83ce922](83ce922)) * **redis:** introduce pub/sub ([#2855](#2855)) ([d6d8ef2](d6d8ef2)) * **series:** support for rx6700xt ([#2290](#2290)) ([113c9ce](113c9ce)) * **store:** add 3050 in topachat and materiel ([#2945](#2945)) ([fc0c3da](fc0c3da)) * **store:** add amd-at ([#2462](#2462)) ([441617f](441617f)) * **store:** add amd-be store ([#2338](#2338)) ([6e9b1a9](6e9b1a9)) * **store:** add amd-nl store ([#2072](#2072)) ([49c9e8c](49c9e8c)) * **store:** Add AO and BT (UK) ([#2089](#2089)) ([1714e89](1714e89)) * **store:** add cyberport-at ([#2463](#2463)) ([5a744b1](5a744b1)) * **store:** add materiel.net (french), 35 3060ti references ([#2287](#2287)) ([0ebe745](0ebe745)) * **store:** add mediamarkt austria ([#1836](#1836)) ([ae8e72a](ae8e72a)) * **store:** add Microsoft (CA) for Xbox X/S ([#2764](#2764)) ([ca784c8](ca784c8)) * **store:** add Microsoft for Xbox S/X ([#2738](#2738)) ([d06d050](d06d050)) * **store:** add MightyApe, NoelLeeming and TheWarehouse (NZ) ([#2133](#2133)) ([e2d8040](e2d8040)) * **store:** add multicom.no and more products to NO stores ([#2483](#2483)) ([41305f1](41305f1)) * **stores-nz:** update labels ([#2486](#2486)) ([c0f46d7](c0f46d7)) * use new nightly release build ([51118ba](51118ba)) * **web:** add select all/none for columns & black theme ([#2878](#2878)) ([2ff7f58](2ff7f58)) ### Bug Fixes * add missing tests in Dockerfile ([#2323](#2323)) ([cd6e1f6](cd6e1f6)) * **alternate:** use button selector instead of text ([#2419](#2419)) ([35f9eb4](35f9eb4)) * amazon prices ([#2914](#2914)) ([f7236b3](f7236b3)), closes [#2926](#2926) * **amazon-es:** use euroFormat ([#2371](#2371)) ([4eb702b](4eb702b)) * **amazon-eu:** checking price selector ([#2856](#2856)) ([19afe41](19afe41)) * **amazon:** false positives for xbox ([#2497](#2497)) ([790fe9b](790fe9b)) * **apns:** use when specified ([99a274d](99a274d)) * **bestbuy-ca:** avoid false positive ([#2694](#2694)) ([0c589a7](0c589a7)) * **captcha:** use Slack captcha handler token when provided ([#2460](#2460)) ([164902a](164902a)), closes [#2428](#2428) * clear cookies when rotating proxies ([#2575](#2575)) ([8854ce9](8854ce9)) * **discord:** add Discord.ClientOptions ([#2714](#2714)) ([3787c54](3787c54)) * **discord:** properly wait for webhooks ([#2352](#2352)) ([bc59da1](bc59da1)) * **docker:** disable opening browser ([d13f7f1](d13f7f1)) * **lookup:** prevent terminal from being hidden ([#2461](#2461)) ([39fac90](39fac90)) * **microcenter:** add outOfStock label ([#2432](#2432)) ([092919a](092919a)), closes [#2407](#2407) * **nodemon:** use npx with ts-node ([#2423](#2423)) ([b6ac6c5](b6ac6c5)) * parsing prices with thousands separator and European format ([#2153](#2153)) ([61f8e3a](61f8e3a)) * partial url regexp ([#2382](#2382)) ([61af2a4](61af2a4)) * **playstation:** fix inStock selector ([#2187](#2187)) ([b0efc83](b0efc83)) * **puppeteer:** cannot read property ([#2987](#2987)) ([04fbdc1](04fbdc1)) * remove spaces from price ([#2482](#2482)) ([eb76f0d](eb76f0d)) * **terraform:** update IAM configuration for ECS deployment ([#2675](#2675)) ([9c346e7](9c346e7)) * **web:** add favicon to prevent missing icon console error ([#2375](#2375)) ([2be33ac](2be33ac)) * **xbox:** false positive ([#2726](#2726)) ([e5e8481](e5e8481)) ### Refactoring * **captcha:** use seconds instead of ms ([#2424](#2424)) ([d652b49](d652b49)) * **freemobile:** remove local throw ([bf8f242](bf8f242)) * **materiel:** update docs, change name ([7ec8a16](7ec8a16)) * simplify maxPrice logic ([a25b7f1](a25b7f1)) * **store:** replace euroFormat with regex ([#2131](#2131)) ([795c723](795c723)) ### Documentation * add better heroku documentation ([#2942](#2942)) ([f344615](f344615)) * fix sort-able tables ([08789a7](08789a7)) * make templates required ([00b468a](00b468a)) * remove twitter ([d19d05c](d19d05c)) * remove twitter ([1aa0224](1aa0224)) * toggle light/dark mode ([1e76d5a](1e76d5a)) * update badges ([c2c8531](c2c8531)) * update edit_uri location ([af603c2](af603c2)) * update incorrect store description for alternate-de ([#2765](#2765)) ([28ce7e9](28ce7e9)) * update issue templates ([74d71e4](74d71e4)) * update issue templates ([9aa3f16](9aa3f16)) * update issue templates ([7171113](7171113)) * update node references ([f65aab8](f65aab8)) * update Xbox Series S and X price limit desc ([#2098](#2098)) ([ba35706](ba35706)) * use node lts ([2a482e3](2a482e3)), closes [#2776](#2776) ### Miscellaneous * add APNS to dotenv-example ([#2174](#2174)) ([4bd048f](4bd048f)) * add links to RX 6700 XT in German stores ([#2736](#2736)) ([430ec73](430ec73)) * **alternate-de:** add gpus ([#2797](#2797)) ([a6d7447](a6d7447)) * **alternate:** add new oos label ([#2409](#2409)) ([5937d01](5937d01)) * **alternate:** add PS5 bundle ([#2562](#2562)) ([1122075](1122075)) * **alternate:** update links and selectors ([#2282](#2282)) ([ea095a3](ea095a3)) * **amazon-fr:** update evga 3080 ftw3 link ([#2286](#2286)) ([5b2fe88](5b2fe88)) * **amazon-uk:** add 3060 cards ([#2229](#2229)) ([983cc52](983cc52)) * **amd:** add rx6800xt midnight black ([#2321](#2321)) ([c7e24e7](c7e24e7)) * **amd:** update rx6900xt urls ([#2094](#2094)) ([7fcce58](7fcce58)) * **amd:** update rx6900xt urls ([#2876](#2876)) ([88ec46e](88ec46e)) * **asus:** update urls ([#2155](#2155)) ([245d110](245d110)) * **bestbuy:** add 3080ti models ([#2670](#2670)) ([cc0aaec](cc0aaec)) * bump dependencies ([10f7e0c](10f7e0c)) * bump dependencies ([#2413](#2413)) ([3c00eca](3c00eca)) * bump node 16.5.0 ([4e3eade](4e3eade)) * bump node version ([9ba964a](9ba964a)) * bump node, implement proper ci cache ([9b0b4d1](9b0b4d1)) * bump stale workflow to 60 days ([3c1419f](3c1419f)) * change url ([2af1531](2af1531)) * change verbiage to be more generic ([e006c48](e006c48)) * **computeruniverse:** add backoff code ([#2542](#2542)) ([42a24a6](42a24a6)) * **coolblue:** add ps5 consoles ([#2597](#2597)) ([4bb58ac](4bb58ac)) * **currys:** add rx6800, rx6800xt and rx6900xt ([#2236](#2236)) ([211e3e2](211e3e2)) * **deps-dev:** bump @types/cheerio from 0.22.28 to 0.22.29 ([#2580](#2580)) ([e4ebdc4](e4ebdc4)) * **deps-dev:** bump @types/node from 14.14.35 to 14.14.36 ([#2233](#2233)) ([a7a5e69](a7a5e69)) * **deps-dev:** bump @types/node from 15.3.0 to 15.6.1 ([#2571](#2571)) ([3e74a4c](3e74a4c)) * **deps-dev:** bump @types/nodemailer from 6.4.1 to 6.4.2 ([#2582](#2582)) ([1cb1787](1cb1787)) * **deps-dev:** bump @types/sinon from 9.0.10 to 9.0.11 ([#2166](#2166)) ([4cdda98](4cdda98)) * **deps-dev:** bump mocha from 8.3.0 to 8.3.2 ([#2167](#2167)) ([a575143](a575143)) * **deps-dev:** bump typescript from 4.2.2 to 4.2.3 ([#2092](#2092)) ([b516e26](b516e26)) * **deps-dev:** bump webpack from 5.24.2 to 5.26.3 ([#2164](#2164)) ([2775124](2775124)) * **deps-dev:** bump webpack from 5.35.0 to 5.36.2 ([#2480](#2480)) ([e397306](e397306)) * **deps-dev:** bump webpack from 5.37.0 to 5.37.1 ([#2558](#2558)) ([9e13cd7](9e13cd7)) * **deps-dev:** bump webpack from 5.37.0 to 5.38.0 ([#2579](#2579)) ([9fc5ec0](9fc5ec0)) * **deps:** bump actions/checkout from 2 to 3 ([#2967](#2967)) ([92a3c94](92a3c94)) * **deps:** bump actions/setup-node from 2 to 3 ([#2963](#2963)) ([31c2887](31c2887)) * **deps:** bump actions/setup-python from 2 to 3 ([#2965](#2965)) ([fe53ba3](fe53ba3)) * **deps:** bump actions/stale from 3 to 4 ([#2671](#2671)) ([e030310](e030310)) * **deps:** bump dependencies ([1ab0af2](1ab0af2)) * **deps:** bump dependencies ([aed9cfe](aed9cfe)) * **deps:** bump dependencies ([2a1734a](2a1734a)) * **deps:** bump dependencies, node 15.14.0 ([91a0ff5](91a0ff5)) * **deps:** bump google-github-actions/release-please-action from 2 to 3.1.3 ([#2968](#2968)) ([0906f64](0906f64)) * **deps:** bump node 16.1.0 ([1e62878](1e62878)) * **deps:** bump node from 15.11.0-alpine3.13 to 15.12.0-alpine3.13 ([#2185](#2185)) ([2ebbf55](2ebbf55)) * **deps:** bump node-notifier from 9.0.1 to 10.0.0 ([#2583](#2583)) ([a751cb1](a751cb1)) * **deps:** bump nodemailer from 6.6.0 to 6.6.1 ([#2568](#2568)) ([2e5b07c](2e5b07c)) * **deps:** bump open from 7.4.2 to 8.0.2 ([#2078](#2078)) ([00e4ddc](00e4ddc)) * **deps:** bump open from 8.0.2 to 8.0.3 ([#2186](#2186)) ([54883f0](54883f0)) * **deps:** bump open from 8.0.2 to 8.2.0 ([#2572](#2572)) ([36e188f](36e188f)) * **deps:** bump top-user-agents from 1.0.25 to 1.0.26 ([#2556](#2556)) ([729afd0](729afd0)) * **deps:** bump twilio from 3.62.0 to 3.63.0 ([#2561](#2561)) ([7d35c2b](7d35c2b)) * **deps:** bump twilio from 3.66.1 to 3.71.1 ([#2837](#2837)) ([72140be](72140be)) * **deps:** bump twitch-chat-client from 4.4.13 to 4.5.1 ([#2127](#2127)) ([eeab4b1](eeab4b1)) * **deps:** bump url-parse from 1.5.3 to 1.5.10 ([#2964](#2964)) ([6f57777](6f57777)) * **elkjop:** update selectors ([#2505](#2505)) ([c9049a3](c9049a3)) * **gamestop:** update inventory ([#2239](#2239)) ([c1c92bd](c1c92bd)) * improve linksBuilder logging ([#2785](#2785)) ([73eaa88](73eaa88)) * **ldlc:** add 3050 ([#2948](#2948)) ([a146ea3](a146ea3)) * **materiel:** add 3070 and 3080 cards ([#2393](#2393)) ([8c39d0d](8c39d0d)) * **mediamarkt, saturn:** add new outOfStock message ([#2850](#2850)) ([5d4f4c5](5d4f4c5)) * **mediamarkt:** update captcha selector ([#2496](#2496)) ([64120e7](64120e7)) * **microcenter:** add 3090 cards ([d46c636](d46c636)) * move lookup loop logging to lower level ([#2784](#2784)) ([a20faaa](a20faaa)) * **multicom:** update selectors ([#2499](#2499)) ([7c4c6ed](7c4c6ed)) * **netonnet-no:** update selectors ([#2547](#2547)) ([0378a7c](0378a7c)) * **nodejs:** bump version ([#2088](#2088)) ([afe7a70](afe7a70)) * **notification:** add better logging, remove debug ([d12639e](d12639e)) * **nvidia:** add 3070ti & 3080ti ([#2798](#2798)) ([ada90bf](ada90bf)) * **otto:** add labels for xbox series x & s ([#2515](#2515)) ([d0a6c7e](d0a6c7e)) * prune invalid links ([#2592](#2592)) ([b33f678](b33f678)) * remove hooks ([b6af582](b6af582)) * remove unused dependencies ([53e7a8d](53e7a8d)) * revert puppeteer, run linter ([5e9b3db](5e9b3db)) * **store:** add additional PS5 bundles and alternative links for MediaMarkt (DE) & Saturn (DE) ([#2820](#2820)) ([668ed54](668ed54)) * **store:** add additional PS5 bundles to MediaMarkt (DE) & Saturn (DE) ([#2787](#2787)) ([0d936a9](0d936a9)) * **store:** add more links to norwegian stores ([#2485](#2485)) ([a286b73](a286b73)) * **store:** add Nvidia RTX Cards ([#2204](#2204)) ([0a9ce0d](0a9ce0d)) * **store:** add some PS5 bundles ([#2021](#2021)) ([d4dc397](d4dc397)) * **store:** EBGames renamed to Gamestop (in Canada) ([#2734](#2734)) ([4e77c67](4e77c67)) * **store:** updated and added Nvidia links ([#2806](#2806)) ([c31a861](c31a861)) * update dependencies ([f14a1ca](f14a1ca)) * update dependencies ([1d08d4c](1d08d4c)) * update dependencies and nightly workflow ([3b43732](3b43732)) * update package-lock, remove ci perms ([#3059](#3059)) ([9b8b8ff](9b8b8ff)) * update pr template ([f0e5c5d](f0e5c5d)) * update stale workflow ([e4a267f](e4a267f)) * **walmart:** update 5900x url ([#2184](#2184)) ([b2ce715](b2ce715)) * **xbox:** update oos selector ([4d89306](4d89306)), closes [#2118](#2118) [#2479](#2479) [#2475](https://github.com/jef/streetmerchant/issues/2475) [#2200](#2200) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [3.6.0](v3.5.0...v3.6.0) (2022-10-21) ### Features * add 3080ti ([#2598](#2598)) ([4cfbd37](4cfbd37)) * add 3080ti ([#2600](#2600)) ([51c9b3a](51c9b3a)) * add a few stores for spain ([#2646](#2646)) ([0b060e8](0b060e8)) * add alternate-fr, 3070ti, change alternate to alternate.de ([#2653](#2653)) ([8c7b8aa](8c7b8aa)) * add INCOGNITO to dotenv-example and volta support ([#2484](#2484)) ([b579052](b579052)) * add interactive captcha handler with Slack and Discord ([#2385](#2385)) ([409769e](409769e)) * add ldlc-italy and fixes ollo/hardware-planet ([#2903](#2903)) ([d4f4076](d4f4076)), closes [#2867](#2867) * add SCREENSHOT_DIR config option ([#2801](#2801)) ([fe99aa4](fe99aa4)) * add ubiquiti store and dream machine model. ([#3034](#3034)) ([87301fe](87301fe)) * add waitUntil and waitForSelctor to linksBuilder ([#2437](#2437)) ([cac7c20](cac7c20)) * **captcha:** add support for configurable capture type ([#2468](#2468)) ([6e614a2](6e614a2)) * change max price behavior ([9b02c36](9b02c36)) * color empty stores ([#2312](#2312)) ([bbfa808](bbfa808)) * **coolmod:** add linksBuilder and update selectors ([#2803](#2803)) ([f297e1d](f297e1d)) * **equippr:** add links builder ([#2795](#2795)) ([e631d80](e631d80)) * **gotify:** add priority option ([#2546](#2546)) ([32fe440](32fe440)) * **notification:** add gotify ([8f2de5d](8f2de5d)), closes [#2541](#2541) [#2536](https://github.com/jef/streetmerchant/issues/2536) * **notification:** add support for Free mobile ([#2285](#2285)) ([6be2e0d](6be2e0d)) * **notifications:** add apple push notifications ([#2077](#2077)) ([6b78b2e](6b78b2e)) * **pushover:** ability to specify device ([#2101](#2101)) ([d03aea0](d03aea0)) * **pushover:** add support for sound ([#2203](#2203)) ([83ce922](83ce922)) * **redis:** introduce pub/sub ([#2855](#2855)) ([d6d8ef2](d6d8ef2)) * **series:** support for rx6700xt ([#2290](#2290)) ([113c9ce](113c9ce)) * **store:** add 3050 in topachat and materiel ([#2945](#2945)) ([fc0c3da](fc0c3da)) * **store:** add amd-at ([#2462](#2462)) ([441617f](441617f)) * **store:** add amd-be store ([#2338](#2338)) ([6e9b1a9](6e9b1a9)) * **store:** add amd-nl store ([#2072](#2072)) ([49c9e8c](49c9e8c)) * **store:** Add AO and BT (UK) ([#2089](#2089)) ([1714e89](1714e89)) * **store:** add cyberport-at ([#2463](#2463)) ([5a744b1](5a744b1)) * **store:** add materiel.net (french), 35 3060ti references ([#2287](#2287)) ([0ebe745](0ebe745)) * **store:** add mediamarkt austria ([#1836](#1836)) ([ae8e72a](ae8e72a)) * **store:** add Microsoft (CA) for Xbox X/S ([#2764](#2764)) ([ca784c8](ca784c8)) * **store:** add Microsoft for Xbox S/X ([#2738](#2738)) ([d06d050](d06d050)) * **store:** add MightyApe, NoelLeeming and TheWarehouse (NZ) ([#2133](#2133)) ([e2d8040](e2d8040)) * **store:** add multicom.no and more products to NO stores ([#2483](#2483)) ([41305f1](41305f1)) * **stores-nz:** update labels ([#2486](#2486)) ([c0f46d7](c0f46d7)) * use new nightly release build ([51118ba](51118ba)) * **web:** add select all/none for columns & black theme ([#2878](#2878)) ([2ff7f58](2ff7f58)) ### Bug Fixes * add missing tests in Dockerfile ([#2323](#2323)) ([cd6e1f6](cd6e1f6)) * **alternate:** use button selector instead of text ([#2419](#2419)) ([35f9eb4](35f9eb4)) * amazon prices ([#2914](#2914)) ([f7236b3](f7236b3)), closes [#2926](#2926) * **amazon-es:** use euroFormat ([#2371](#2371)) ([4eb702b](4eb702b)) * **amazon-eu:** checking price selector ([#2856](#2856)) ([19afe41](19afe41)) * **amazon:** false positives for xbox ([#2497](#2497)) ([790fe9b](790fe9b)) * **apns:** use when specified ([99a274d](99a274d)) * **bestbuy-ca:** avoid false positive ([#2694](#2694)) ([0c589a7](0c589a7)) * **captcha:** use Slack captcha handler token when provided ([#2460](#2460)) ([164902a](164902a)), closes [#2428](#2428) * clear cookies when rotating proxies ([#2575](#2575)) ([8854ce9](8854ce9)) * **discord:** add Discord.ClientOptions ([#2714](#2714)) ([3787c54](3787c54)) * **discord:** properly wait for webhooks ([#2352](#2352)) ([bc59da1](bc59da1)) * **docker:** disable opening browser ([d13f7f1](d13f7f1)) * **lookup:** prevent terminal from being hidden ([#2461](#2461)) ([39fac90](39fac90)) * **microcenter:** add outOfStock label ([#2432](#2432)) ([092919a](092919a)), closes [#2407](#2407) * **nodemon:** use npx with ts-node ([#2423](#2423)) ([b6ac6c5](b6ac6c5)) * parsing prices with thousands separator and European format ([#2153](#2153)) ([61f8e3a](61f8e3a)) * partial url regexp ([#2382](#2382)) ([61af2a4](61af2a4)) * **playstation:** fix inStock selector ([#2187](#2187)) ([b0efc83](b0efc83)) * **puppeteer:** cannot read property ([#2987](#2987)) ([04fbdc1](04fbdc1)) * remove spaces from price ([#2482](#2482)) ([eb76f0d](eb76f0d)) * **terraform:** update IAM configuration for ECS deployment ([#2675](#2675)) ([9c346e7](9c346e7)) * **web:** add favicon to prevent missing icon console error ([#2375](#2375)) ([2be33ac](2be33ac)) * **xbox:** false positive ([#2726](#2726)) ([e5e8481](e5e8481)) ### Refactoring * **captcha:** use seconds instead of ms ([#2424](#2424)) ([d652b49](d652b49)) * **freemobile:** remove local throw ([bf8f242](bf8f242)) * **materiel:** update docs, change name ([7ec8a16](7ec8a16)) * simplify maxPrice logic ([a25b7f1](a25b7f1)) * **store:** replace euroFormat with regex ([#2131](#2131)) ([795c723](795c723)) ### Documentation * add better heroku documentation ([#2942](#2942)) ([f344615](f344615)) * fix sort-able tables ([08789a7](08789a7)) * make templates required ([00b468a](00b468a)) * remove twitter ([d19d05c](d19d05c)) * remove twitter ([1aa0224](1aa0224)) * toggle light/dark mode ([1e76d5a](1e76d5a)) * update badges ([c2c8531](c2c8531)) * update edit_uri location ([af603c2](af603c2)) * update incorrect store description for alternate-de ([#2765](#2765)) ([28ce7e9](28ce7e9)) * update issue templates ([74d71e4](74d71e4)) * update issue templates ([9aa3f16](9aa3f16)) * update issue templates ([7171113](7171113)) * update node references ([f65aab8](f65aab8)) * update Xbox Series S and X price limit desc ([#2098](#2098)) ([ba35706](ba35706)) * use node lts ([2a482e3](2a482e3)), closes [#2776](#2776) ### Miscellaneous * add APNS to dotenv-example ([#2174](#2174)) ([4bd048f](4bd048f)) * add links to RX 6700 XT in German stores ([#2736](#2736)) ([430ec73](430ec73)) * **alternate-de:** add gpus ([#2797](#2797)) ([a6d7447](a6d7447)) * **alternate:** add new oos label ([#2409](#2409)) ([5937d01](5937d01)) * **alternate:** add PS5 bundle ([#2562](#2562)) ([1122075](1122075)) * **alternate:** update links and selectors ([#2282](#2282)) ([ea095a3](ea095a3)) * **amazon-fr:** update evga 3080 ftw3 link ([#2286](#2286)) ([5b2fe88](5b2fe88)) * **amazon-uk:** add 3060 cards ([#2229](#2229)) ([983cc52](983cc52)) * **amd:** add rx6800xt midnight black ([#2321](#2321)) ([c7e24e7](c7e24e7)) * **amd:** update rx6900xt urls ([#2094](#2094)) ([7fcce58](7fcce58)) * **amd:** update rx6900xt urls ([#2876](#2876)) ([88ec46e](88ec46e)) * **asus:** update urls ([#2155](#2155)) ([245d110](245d110)) * **bestbuy:** add 3080ti models ([#2670](#2670)) ([cc0aaec](cc0aaec)) * bump dependencies ([10f7e0c](10f7e0c)) * bump dependencies ([#2413](#2413)) ([3c00eca](3c00eca)) * bump node 16.5.0 ([4e3eade](4e3eade)) * bump node version ([9ba964a](9ba964a)) * bump node, implement proper ci cache ([9b0b4d1](9b0b4d1)) * bump stale workflow to 60 days ([3c1419f](3c1419f)) * change url ([2af1531](2af1531)) * change verbiage to be more generic ([e006c48](e006c48)) * **computeruniverse:** add backoff code ([#2542](#2542)) ([42a24a6](42a24a6)) * **coolblue:** add ps5 consoles ([#2597](#2597)) ([4bb58ac](4bb58ac)) * **currys:** add rx6800, rx6800xt and rx6900xt ([#2236](#2236)) ([211e3e2](211e3e2)) * **deps-dev:** bump @types/cheerio from 0.22.28 to 0.22.29 ([#2580](#2580)) ([e4ebdc4](e4ebdc4)) * **deps-dev:** bump @types/node from 14.14.35 to 14.14.36 ([#2233](#2233)) ([a7a5e69](a7a5e69)) * **deps-dev:** bump @types/node from 15.3.0 to 15.6.1 ([#2571](#2571)) ([3e74a4c](3e74a4c)) * **deps-dev:** bump @types/nodemailer from 6.4.1 to 6.4.2 ([#2582](#2582)) ([1cb1787](1cb1787)) * **deps-dev:** bump @types/sinon from 9.0.10 to 9.0.11 ([#2166](#2166)) ([4cdda98](4cdda98)) * **deps-dev:** bump mocha from 8.3.0 to 8.3.2 ([#2167](#2167)) ([a575143](a575143)) * **deps-dev:** bump typescript from 4.2.2 to 4.2.3 ([#2092](#2092)) ([b516e26](b516e26)) * **deps-dev:** bump webpack from 5.24.2 to 5.26.3 ([#2164](#2164)) ([2775124](2775124)) * **deps-dev:** bump webpack from 5.35.0 to 5.36.2 ([#2480](#2480)) ([e397306](e397306)) * **deps-dev:** bump webpack from 5.37.0 to 5.37.1 ([#2558](#2558)) ([9e13cd7](9e13cd7)) * **deps-dev:** bump webpack from 5.37.0 to 5.38.0 ([#2579](#2579)) ([9fc5ec0](9fc5ec0)) * **deps:** bump actions/checkout from 2 to 3 ([#2967](#2967)) ([92a3c94](92a3c94)) * **deps:** bump actions/setup-node from 2 to 3 ([#2963](#2963)) ([31c2887](31c2887)) * **deps:** bump actions/setup-python from 2 to 3 ([#2965](#2965)) ([fe53ba3](fe53ba3)) * **deps:** bump actions/stale from 3 to 4 ([#2671](#2671)) ([e030310](e030310)) * **deps:** bump dependencies ([1ab0af2](1ab0af2)) * **deps:** bump dependencies ([aed9cfe](aed9cfe)) * **deps:** bump dependencies ([2a1734a](2a1734a)) * **deps:** bump dependencies, node 15.14.0 ([91a0ff5](91a0ff5)) * **deps:** bump google-github-actions/release-please-action from 2 to 3.1.3 ([#2968](#2968)) ([0906f64](0906f64)) * **deps:** bump node 16.1.0 ([1e62878](1e62878)) * **deps:** bump node from 15.11.0-alpine3.13 to 15.12.0-alpine3.13 ([#2185](#2185)) ([2ebbf55](2ebbf55)) * **deps:** bump node-notifier from 9.0.1 to 10.0.0 ([#2583](#2583)) ([a751cb1](a751cb1)) * **deps:** bump nodemailer from 6.6.0 to 6.6.1 ([#2568](#2568)) ([2e5b07c](2e5b07c)) * **deps:** bump open from 7.4.2 to 8.0.2 ([#2078](#2078)) ([00e4ddc](00e4ddc)) * **deps:** bump open from 8.0.2 to 8.0.3 ([#2186](#2186)) ([54883f0](54883f0)) * **deps:** bump open from 8.0.2 to 8.2.0 ([#2572](#2572)) ([36e188f](36e188f)) * **deps:** bump top-user-agents from 1.0.25 to 1.0.26 ([#2556](#2556)) ([729afd0](729afd0)) * **deps:** bump twilio from 3.62.0 to 3.63.0 ([#2561](#2561)) ([7d35c2b](7d35c2b)) * **deps:** bump twilio from 3.66.1 to 3.71.1 ([#2837](#2837)) ([72140be](72140be)) * **deps:** bump twitch-chat-client from 4.4.13 to 4.5.1 ([#2127](#2127)) ([eeab4b1](eeab4b1)) * **deps:** bump url-parse from 1.5.3 to 1.5.10 ([#2964](#2964)) ([6f57777](6f57777)) * **elkjop:** update selectors ([#2505](#2505)) ([c9049a3](c9049a3)) * **gamestop:** update inventory ([#2239](#2239)) ([c1c92bd](c1c92bd)) * improve linksBuilder logging ([#2785](#2785)) ([73eaa88](73eaa88)) * **ldlc:** add 3050 ([#2948](#2948)) ([a146ea3](a146ea3)) * **materiel:** add 3070 and 3080 cards ([#2393](#2393)) ([8c39d0d](8c39d0d)) * **mediamarkt, saturn:** add new outOfStock message ([#2850](#2850)) ([5d4f4c5](5d4f4c5)) * **mediamarkt:** update captcha selector ([#2496](#2496)) ([64120e7](64120e7)) * **microcenter:** add 3090 cards ([d46c636](d46c636)) * move lookup loop logging to lower level ([#2784](#2784)) ([a20faaa](a20faaa)) * **multicom:** update selectors ([#2499](#2499)) ([7c4c6ed](7c4c6ed)) * **netonnet-no:** update selectors ([#2547](#2547)) ([0378a7c](0378a7c)) * **nodejs:** bump version ([#2088](#2088)) ([afe7a70](afe7a70)) * **notification:** add better logging, remove debug ([d12639e](d12639e)) * **nvidia:** add 3070ti & 3080ti ([#2798](#2798)) ([ada90bf](ada90bf)) * **otto:** add labels for xbox series x & s ([#2515](#2515)) ([d0a6c7e](d0a6c7e)) * prune invalid links ([#2592](#2592)) ([b33f678](b33f678)) * remove hooks ([b6af582](b6af582)) * remove unused dependencies ([53e7a8d](53e7a8d)) * revert puppeteer, run linter ([5e9b3db](5e9b3db)) * **store:** add additional PS5 bundles and alternative links for MediaMarkt (DE) & Saturn (DE) ([#2820](#2820)) ([668ed54](668ed54)) * **store:** add additional PS5 bundles to MediaMarkt (DE) & Saturn (DE) ([#2787](#2787)) ([0d936a9](0d936a9)) * **store:** add more links to norwegian stores ([#2485](#2485)) ([a286b73](a286b73)) * **store:** add Nvidia RTX Cards ([#2204](#2204)) ([0a9ce0d](0a9ce0d)) * **store:** add some PS5 bundles ([#2021](#2021)) ([d4dc397](d4dc397)) * **store:** EBGames renamed to Gamestop (in Canada) ([#2734](#2734)) ([4e77c67](4e77c67)) * **store:** updated and added Nvidia links ([#2806](#2806)) ([c31a861](c31a861)) * update dependencies ([f14a1ca](f14a1ca)) * update dependencies ([1d08d4c](1d08d4c)) * update dependencies and nightly workflow ([3b43732](3b43732)) * update package-lock, remove ci perms ([#3059](#3059)) ([ba98f26](ba98f26)) * update pr template ([f0e5c5d](f0e5c5d)) * update stale workflow ([e4a267f](e4a267f)) * **walmart:** update 5900x url ([#2184](#2184)) ([b2ce715](b2ce715)) * **xbox:** update oos selector ([4d89306](4d89306)), closes [#2118](#2118) [#2479](#2479) [#2475](https://github.com/jef/streetmerchant/issues/2475) [#2200](#2200) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Description
Update: The logic is now configurable and defaults to the current implementation
link
but is settable per-store or with a global override in dotenv. This sidesteps the overall impact of the below discussion points (but not its relevance to the available options).Changes the logic of the captcha handler to take a screenshot of the target element rather extracting an image url. This approach has some advantages and drawbacks worth consideration:
I also added the captcha handler config for all Amazon sites after testing them in bulk. It appears they all have the same structure (as one might expect). Guess that'll fix issues like #2452.
Testing
npm run test:captcha
with various service configurations. Captcha test is updated to actually open a live page and grab image.