mirror of
https://github.com/opelly27/streetmerchant.git
synced 2026-05-20 01:47:39 +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. |
|
||||
|
||||
???+ 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
|
||||
- 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;
|
||||
}
|
||||
|
||||
function loadProxyList(filename: string) {
|
||||
return readFileSync(`${filename}.proxies`)
|
||||
.toString()
|
||||
.trim()
|
||||
.split('\n')
|
||||
.map((x) => x.trim());
|
||||
}
|
||||
|
||||
const browser = {
|
||||
isHeadless: envOrBoolean(process.env.HEADLESS),
|
||||
isIncognito: envOrBoolean(process.env.INCOGNITO, false),
|
||||
@@ -384,13 +392,15 @@ const store = {
|
||||
|
||||
let proxyList;
|
||||
try {
|
||||
proxyList = readFileSync(`${name}.proxies`)
|
||||
.toString()
|
||||
.trim()
|
||||
.split('\n')
|
||||
.map((x) => x.trim());
|
||||
proxyList = loadProxyList(name);
|
||||
} catch {}
|
||||
|
||||
if (!proxyList) {
|
||||
try {
|
||||
proxyList = loadProxyList('global');
|
||||
} catch {}
|
||||
}
|
||||
|
||||
return {
|
||||
maxPageSleep: envOrNumberMax(
|
||||
minPageSleep,
|
||||
|
||||
Reference in New Issue
Block a user