base on grass-mining
Discover the latest `<crypto/>` moves in my Telegram Channel:
[![My Channel π₯°](https://img.shields.io/badge/Web3_Enjoyer_|_Subscribe_π₯°-0A66C2?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/web3_enjoyer_club)
Cheapest [proxies and servers](https://teletype.in/@web3enjoyer/4a2G9NuHssy) which fits for on [grass.io](https://app.getgrass.io/register/?referralCode=erxggzon61FWrJ9).
Also you can use for free [Nodepay+ bot](https://github.com/MsLolita/Nodepay_plus) with ui.
![image](https://img4.teletype.in/files/3b/88/3b886c4d-5b54-4463-bddd-3ce86342d666.png)
### Also can be useful: [Grass Final Checker](https://github.com/MsLolita/Grass-Checker) or [Grass Claimer](https://github.com/MsLolita/Grass-Claimer)
# πΉGrass Auto Reger&Farm πΉ
![image](https://github.com/MsLolita/grass/assets/58307006/610b95b4-369f-4a71-ac24-f45e8dee6380)
### What is bot for?
- Create Accounts
- Farm Points
- Check Points
- Approve Emails without access to it (no need imap, etc)
> You can put as many proxies as u can, bot uses database and will load up proxies from extra ones
To hang several connections on 1 account, you just need to duplicate it in the accounts.txt.
## Quick Start π
1. To install libraries on Windows click on `INSTALL.bat` (or in console: `pip install -r requirements.txt`).
2. To start bot use `START.bat` (or in console: `python main.py`).
### Options π§
1. CREATE ACCOUNTS:
- In `data/config.py` put `REGISTER_ACCOUNT_ONLY = True`
- Throw the api key into `data/config.py`. Since there is a captcha there, you need a service for solving captchas - [AntiCaptcha](http://getcaptchasolution.com/t8yfysqmh3) or [Twocaptcha](https://2captcha.com/?from=12939391).
- Provide emails and passwords (OPTIONAL) and proxies to register accounts as below!
![image](https://github.com/MsLolita/grass/assets/58307006/67740c9b-07d6-4f78-a87d-27b09c0303e8)
2. FARM POINTS:
- in `data/config.py` put `REGISTER_ACCOUNT_ONLY = False`
- Provide emails and passwords and proxies to register accounts as shown below!
3. APPROVE EMAILS:
- in `data/config.py`:
- `APPROVE_EMAIL = True` approve email (NEEDED IMAP AND ACCESS TO EMAIL)
- `CONNECT_WALLET = True` connect wallet (put private keys in wallets.txt)
- `SEND_WALLET_APPROVE_LINK_TO_EMAIL = True` # send approve link to email
- `APPROVE_WALLET_ON_EMAIL = True` # get approve link from email (NEEDED IMAP AND ACCESS TO EMAIL)
- Provide emails and passwords and imap password (access to email) in format email:password:imap_password!
- Need IMAP access to email
- `SEMI_AUTOMATIC_APPROVE_LINK = False ` # If True, allows manual pasting of the approval link from the email to the CLI. All flags above need to be set to True. If you use this flag, you do not need to provide IMAP access
- `SINGLE_IMAP_ACCOUNT = False ` # if you have possibility to forward all approve mails to single IMAP address. Usage: change False to "
[email protected]:password" of your main IMAP address
- `EMAIL_FOLDER = "" ` # skip for auto, folder where mails comes
- `IMAP_DOMAIN = "" ` # skip for auto domain, not always works
![image](https://github.com/MsLolita/grass/assets/58307006/e28fba4c-1809-48f9-9475-d881a26beab5)
![image](https://github.com/opensolmap/solmap/assets/58307006/edf3ad67-37b4-434c-acfb-98cf58801c61)
### Configuration π§
1. Accounts Setup π
Put in `data/accounts.txt` accounts in format email:password (
[email protected]:my_password123)
![image](https://github.com/MsLolita/grass/assets/58307006/2f8bacaa-0212-49fe-b362-fe764230f47c)
2. Proxy Setup π
Configure your proxies with the *ANY* (socks, http/s, ...) format in `data/proxies.txt` π
![Proxy Configuration](https://github.com/MsLolita/VeloData/assets/58307006/a2c95484-52b6-497a-b89e-73b89d953d8c)
## Quick Start By Docker
1. Install Docker-CE: `curl -sSL -k https://get.docker.com | sh`
2. Install Docker Compose: `curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose`
3. Clone Source Code: `git clone https://github.com/MsLolita/grass.git`
4. Configuration: Modify `data/accounts.txt` and `data/proxies.txt`
5. Start Container: `docker-compose up -d`
PS: Could see more configuration in `docker-compose.yml`
## Extra guide from user
### 1. Setting Up Data Files
**accounts.txt** β Format for entries is: `email:password:password`
Example: `
[email protected]:qwert123:qwert123`
The first password is for logging into the Grass service, and the second one is for the email.
If you have a batch of emails with the same password, use the same password twice.
**wallets.txt** β Enter Solana private keys in Base58 format:
A generator can be found at this link: [Create Solana Wallet](https://ct.app/createWallet/sol).
**proxies.txt** β Use HTTP proxies in the format `login:pass@ip:port`.
---
### 2. Configuration for Account Registration
To register new accounts, use the following settings:
```plaintext
REGISTER_ACCOUNT_ONLY = True
MINING_MODE = False
```
**Saving registered account information:**
Successfully registered accounts are saved in `\logs\new_accounts.txt` in the format: `email:password:nickname`.
Additional result files:
- `\logs\failed.txt` β failed registrations.
- `\logs\success.txt` β successful registrations.
---
### 3. Configuring Email Verification and Wallet Connection
For email verification and wallet connection, use these settings:
```plaintext
APPROVE_EMAIL = True
CONNECT_WALLET = True
SEND_WALLET_APPROVE_LINK_TO_EMAIL = True
APPROVE_WALLET_ON_EMAIL = True
----
REGISTER_ACCOUNT_ONLY = False
MINING_MODE = False
```
**Note:** These settings will send a wallet confirmation link to the email and complete the registration.
---
### 4. Mining Mode
To enable mining mode, use the following settings:
```plaintext
APPROVE_EMAIL = False
CONNECT_WALLET = False
SEND_WALLET_APPROVE_LINK_TO_EMAIL = False
APPROVE_WALLET_ON_EMAIL = False
----
REGISTER_ACCOUNT_ONLY = False
MINING_MODE = True
```
---
### 5. Captcha Solving
To register accounts, a captcha-solving service is required.
Captcha is not required in mining mode.
", Assign "at most 3 tags" to the expected json: {"id":"8975","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"