Proxies

Every Facebook account goes out through its own proxy, kept as one URL in Twenty whichever provider it came from. log-cli reads the provider from the proxy's host, gives an account a proxy from 2Captcha or Byteful in its home city after checking it, sets the proxy speed limit per run, meters each account's proxy traffic against a 24 hour budget, and never buys from a provider. Rules 33, 43, 51 and 52 (rule 52 widens rule 43 to Byteful).

Speed limit

REQ-PROXY-01: --proxyMs sets the speed limit for one run

--proxyMs <ms> on any log command sets LOG_PROXY_MAX_MS for that run only, and puts back what was there before once the run ends. A value that is not a whole number from 500 to 60000 is refused before the command runs.

Checked by: code and SubQ

REQ-PROXY-02: The speed limit defaults to 2500 ms

When LOG_PROXY_MAX_MS is not set, the limit is 2500 ms, in the TypeScript checks and in the Python gate alike.

Checked by: code and SubQ

Providers

REQ-PROXY-03: The provider is read from the proxy's host

The provider of an account's proxy is read from the host of its one proxy URL: proxy.2captcha.com is 2Captcha and byteful.com is Byteful, both billed by traffic. A URL that does not parse or a host that is neither has no provider.

Checked by: code and SubQ

REQ-PROXY-04: An assigned proxy is checked before it is saved

log proxy assign saves a proxy to the account's proxy field in Twenty only after it exits in the account's home country, within 100 km of its home city, and fast enough for Facebook. It tries up to 3 sessions, and saves none when every one is too far or too slow.

Checked by: code and SubQ

REQ-PROXY-05: Byteful gives a sticky 24 hour residential proxy in the home city

log proxy assign --vendor byteful asks Byteful's residential list for one sticky proxy with a 24 hour session, in the account's home country and the Byteful city picked for its home city (or --city).

Checked by: code and SubQ

REQ-PROXY-06: Deactivated and non-Facebook accounts get no proxy

log proxy assign refuses an account that is deactivated, is not a Facebook account, or has no home country, with either provider.

Checked by: code and SubQ

REQ-PROXY-07: log-cli never buys from a provider

log-cli only reads from the providers: balances, cities, proxy lists and a price quote. Nothing in it creates a checkout or an order.

Checked by: SubQ

Traffic budget

REQ-PROXY-08: Each account has a 24 hour traffic budget of 1 GB by default

An account's proxy traffic budget is 1024 MB over the last 24 hours, counted from the runs recorded for that account in ~/.logCli/proxyTraffic.jsonl. --trafficMb sets another budget for the run.

Checked by: code and SubQ

REQ-PROXY-09: A warm-up over its budget does not start

A Reels or feed warm-up on a metered proxy whose account has no budget left is refused with trafficBudgetSpent before any step runs.

Checked by: code and SubQ

REQ-PROXY-10: The Reels warm-up checks its traffic every 5 reels and stops at the budget

The Reels warm-up reads the provider's counter at the start and again every 5 swipes, and stops with trafficBudgetSpent once the traffic used in 24 hours reaches the budget.

Checked by: code and SubQ

REQ-PROXY-11: Each run's traffic is recorded

At the end of a metered warm-up its traffic is read from the provider's counter and one line with the time, account, run and megabytes is appended to ~/.logCli/proxyTraffic.jsonl.

Checked by: code and SubQ

REQ-PROXY-12: A proxy is metered by its own provider, a static IP is not

A traffic-billed proxy is metered by its own provider's counter (2Captcha's used flow, Byteful's residential bytes used). A proxy with no traffic-billed provider, such as a static IP, is not metered.

Checked by: code and SubQ