mirror of
https://github.com/opelly27/streetmerchant.git
synced 2026-05-20 02:57:34 +00:00
feat(proxy): fallback to a global proxy list (#1388)
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
| `WEB_PORT` | Starts a webserver to be able to control the bot while it is running. Setting this value starts this service. |
|
| `WEB_PORT` | Starts a webserver to be able to control the bot while it is running. Setting this value starts this service. |
|
||||||
|
|
||||||
???+ info
|
???+ info
|
||||||
You can also have a list of proxies that are rotated while searching stores. Proxies can be read from a file named `STORENAME.proxies` in the format of `socks5://username:password@ip`; one per line. In this case, there is no need to use the `PROXY_*` environments.
|
There is more information on proxy settings in the [Proxy documentation](proxy.md).
|
||||||
|
|
||||||
???+ tip
|
???+ tip
|
||||||
- You can also have a list of proxies that are rotated while searching stores. Proxies can be read from a file named `STORENAME.proxies` in the format of `socks5://username:password@ip`; one per line.
|
- You can also have a list of proxies that are rotated while searching stores. Proxies can be read from a file named `STORENAME.proxies` in the format of `socks5://username:password@ip`; one per line.
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# Proxy
|
||||||
|
|
||||||
|
## Filename
|
||||||
|
|
||||||
|
Proxy configuration can be set either per store in a file called `storename.proxies` or globally in `global.proxies` in the streetmerchant root directory.
|
||||||
|
|
||||||
|
If both exist, the store specific file will take precedence.
|
||||||
|
|
||||||
|
## Format
|
||||||
|
|
||||||
|
The format is one proxy per line with the following structure:
|
||||||
|
`protocol://[user:password@]ip[:port]`
|
||||||
|
|
||||||
|
Supported protocols are `http` and `socks5`.
|
||||||
|
|
||||||
|
Valid examples include:
|
||||||
|
- `socks5://1.2.3.4:3180`
|
||||||
|
- `socks5://abcd:efgh@1.2.3.4:5678`
|
||||||
|
- `http://1.2.3.4:80`
|
||||||
|
- `http://abcd:efgh@1.2.3.4:8080`
|
||||||
+15
-5
@@ -147,6 +147,14 @@ function envOrNumberMax(
|
|||||||
return number ?? 0;
|
return number ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadProxyList(filename: string) {
|
||||||
|
return readFileSync(`${filename}.proxies`)
|
||||||
|
.toString()
|
||||||
|
.trim()
|
||||||
|
.split('\n')
|
||||||
|
.map((x) => x.trim());
|
||||||
|
}
|
||||||
|
|
||||||
const browser = {
|
const browser = {
|
||||||
isHeadless: envOrBoolean(process.env.HEADLESS),
|
isHeadless: envOrBoolean(process.env.HEADLESS),
|
||||||
isIncognito: envOrBoolean(process.env.INCOGNITO, false),
|
isIncognito: envOrBoolean(process.env.INCOGNITO, false),
|
||||||
@@ -384,13 +392,15 @@ const store = {
|
|||||||
|
|
||||||
let proxyList;
|
let proxyList;
|
||||||
try {
|
try {
|
||||||
proxyList = readFileSync(`${name}.proxies`)
|
proxyList = loadProxyList(name);
|
||||||
.toString()
|
|
||||||
.trim()
|
|
||||||
.split('\n')
|
|
||||||
.map((x) => x.trim());
|
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
|
if (!proxyList) {
|
||||||
|
try {
|
||||||
|
proxyList = loadProxyList('global');
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
maxPageSleep: envOrNumberMax(
|
maxPageSleep: envOrNumberMax(
|
||||||
minPageSleep,
|
minPageSleep,
|
||||||
|
|||||||
Reference in New Issue
Block a user