xproxy
xproxy copied to clipboard
This project introduce about make your self 3G/4G/LTE proxies, build your self mobiles proxies
XProxy.IO - Build your self mobile proxies
This repository introduce information of XProxy device. Xproxy device can help you make 3G/4G proxies for MMO users who don't know much about mobile proxy setup or technical.
You can use any 3G/LTE dongles, Android phones on the world to makes proxies. It's easy, just plug dongles and proxies make automatically!
Table of contents
- The list of dongles support by XProxy Device
- REST API document
The list of dongles support by XProxy Device
- All Huawei dongles support Hilink interface such as: E3372h, E3372s, E8372h, E303h, E353h, E3276, E3276s, E3272, E3131, E3531, E3351, E3251, E392, E398, E397, E8278, E323S, K5005, K5007, K5150, W5101
- Xproxy XH20, XH22
Rest API document
Modem & Proxy REST API
Get list devices and proxies information
GET /api/v1/info_list
Parameters
name type data type description page optional integer A number of current page to fetch info limit optional integer A number of items to get per page
Responses
Click to expand
{
"status: True,
"data": [
{
"position": 1,
"host": "192.168.177.133",
"proxy_port": 4201,
"proxy_port_v6": 6201,
"socks5_port": 5201,
"socks5_port_ipv6": 7201,
"public_ip": "171.255.118.95",
"public_ip_ipv6": null,
"last_rotation": null,
"last_updated_ip": 1623331226.473283,
"device_manufacture": "HW-Hilink",
"device_imei": "866785034707108",
"device_number": "11",
"device_ip": "192.168.11.1",
"device_rebooting": false,
"device_resetting": false,
"device_extra_info": {
"rssi_info": "N/A",
"name": "E3372",
"serial": "Y4Q7S19510000205",
"imei": "866785034707108",
"imsi": "452040320937808",
"wan": "undefined",
"connected": true,
"network_mode": "LTE_4G",
"sim_live": true,
"signal_strength": "5",
"swver": "22.333.63.00.143",
"hwver": "CL2E3372HM",
"provider_id": "45204",
"provider": "Viettel"
}
},
{
"position": 2,
"host": "192.168.177.133",
"proxy_port": 4202,
"proxy_port_v6": 6202,
"socks5_port": 5202,
"socks5_port_ipv6": 7202,
"public_ip": "103.199.70.155",
"public_ip_ipv6": "2402:9d80:38a:dda0:c0e:ee4:933:907",
"last_rotation": 1623330956.916284,
"last_updated_ip": 1623331189.96525,
"device_manufacture": "XProxy-Hilink",
"device_imei": "869383054786694",
"device_number": "1",
"device_ip": "192.168.1.1",
"device_rebooting": false,
"device_resetting": false,
"device_extra_info": {
"connected": true,
"sim_live": true,
"signal_strength": 4,
"network_mode": "4G",
"name": "XH20",
"rssi_info": 44,
"imei": "869383054786694",
"swver": "1.0",
"hwver": "1.0",
"imsi": "8984012002134231827f",
"provider_id": "Mobifone",
"provider": "Mobifone"
}
}
],
"total": 2
}
Example cURL
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/info_list
Rotation IP with specific proxy or position
GET /api/v1/rotate_ip/proxy/> [rotation IP with specific proxy]
Parameters
name type data type description proxy required string A proxy or socks in format ip:portto indicate the device to rotation IP
Responses
field data type description status boolean Trueif sent command successfully,Falseif another reasonmsg string slot_not_foundcould not find the slot attached with the proxymodem_disconnectedmodem disconnected, could not rotationcommand_sentsent successfully
- Send rotation command successfully
{
"status": true,
"msg": "command_sent"
}
- Another status
{
"status": false,
"msg": "modem_disconnected"
}
Example cURL
send a command to rotation IP of device for proxy
192.168.1.100:4001
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/rotate_ip/proxy/192.168.1.100:4001
GET /api/v1/rotate_ip/position/> [rotation IP with specific position]
Parameters
name type data type description position required number A position number of modem in device list from 1 to N to indicate the device to rotation IP
Responses
Same as rotation IP with specific proxy
Example cURL
send a command to rotation IP of modem in position 1
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/rotate_ip/position/1
Get status of proxy or position
GET /api/v1/status/proxy/> [get status of specific proxy]
Parameters
name type data type description proxy required string A proxy or socks in format ip:portto indicate the device to get status
Responses
field data type description status boolean Trueif modem ready,Falseif modem busy or offlinemsg string MODEM_READYwhen modem normally,MODEM_NOT_FOUNDwhen not found modem attached to this positionMODEM_DISCONNECTEDwhen modem disconnected,COLLISION_IPwhen modem met collision IP with before rotation
- Modem ready
{
"status": true,
"msg": "MODEM_READY"
}
- Another status
{
"status": false,
"msg": "MODEM_DISCONNECTED"
}
Example cURL
send a command to get status of device for proxy
192.168.1.100:4001
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/status/proxy/192.168.1.100:4001
GET /api/v1/status/position/> [get status of specific position]
Parameters
name type data type description position required number A position number of modem in device list from 1 to N
Responses
Same as get status of specific proxy
Example cURL
send a command to get status of device at position 1
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/status/position/1
Reboot dongle with specific proxy or position
GET /api/v1/reboot/proxy/> [reboot dongle with specific proxy]
Parameters
name type data type description proxy required string A proxy or socks in format ip:portto indicate the device to reboot
Responses
field data type description status boolean Trueif sent command successfully,Falseif another reasonmsg string modem_disconnectedmodem disconnected, could not rotation
- Send reboot command successfully
{
"status": true,
"msg": "Modem reboot successfully!"
}
- Another status
{
"status": false,
"msg": "modem_disconnected"
}
Example cURL
send a command to reboot device for proxy
192.168.1.100:4001
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/reboot/proxy/192.168.1.100:4001
GET /api/v1/reboot/position/> [reboot dongle with specific position]
Parameters
name type data type description position required number A position number of modem in device list from 1 to N to indicate the device to reboot
Responses
Same as reboot dongle with specific proxy
Example cURL
send a command to reboot modem in position 1
curl -X GET -H "Content-Type: application/json" http://192.168.1.100/api/v1/reboot/position/1
Selling platform REST API
Get list shared socks/proxies
GET /selling/shared_proxies
Parameters
name type data type description page optional integer A number of current page to fetch info limit optional integer A number of items to get per page modemPosition optional integer A filter parameter to get only shared socks/proxies belong to device in position number modemPositionproxyPort optional integer A filter parameter to get only shared socksproxy with port number proxyPort
Responses
A list of json object in data section
name type description id integer ID of shared socks/proxy position integer Position of dongle which shared shared_port integer A port number of socks/proxy port_type enum [ HTTP,SocksV5]An enum indicate this port is HTTPis a proxy orSocksV5is a socks v5ip_type enum [ IPv4,IPv6]An enum indicate this port will produced type of IP: IPv4orIPv6auth_ip_enabled boolean Authentication IP enabled? trueif enabled elsefalseauth_ip_list string Authentication IP list separate by comma like 128.123.1.38,1.211.12.125auth_user_enabled boolean Authentication user/password enabled? trueif enabled elsefalseauth_user_list string Authentication user/password list separate by comma like user1:pass1,user2:pass2web_blacklist_enabled boolean Website blacklist enabled? trueif enabled elsefalseweb_blacklist string Website blacklist list separate by comma like *.blacklist.com,facebook.com,*.facebook.comweb_whitelist string Website whitelist list separate by comma like *.whitelist.com,facebook.com,*.facebook.comexpired_at string A day present the expired date of this port, format dd/MM/yyyyremaining float Present the number days remaining to use this port counter_dl_limit enum [ unlimited,limited]An enum indicate this port is limitedorunlimiteddownload data usagecounter_dl_limit_by enum [ DAILY,WEEKLY,An enum indicate this port is limiteddownload data usage by:MONTHLY,END_QUOTA,NONE]DAILY: counter will reset dailyWEEKLY: counter will reset weeklyMONTHLY: counter will reset monthlyEND_QUOTA: counter will reset when metcounter_dl_limit_quotalimitedNONE:ulimitedwithout limit data usagecounter_dl_limit_quota integer A number of MB (Megabytes) to limit download data when counter_dl_limitenabled aslimitedAnd it will be caused this proxy can not use when reach the end of counter_dl_limit_quotaMB incounter_dl_limit_byperiod.counter_dl_used_bytes integer An integer indicate number of bytesdata downloaded of this proxycounter_dl_used_mb double A double indicate number of MB (Megabyte)data downloaded of this proxycounter_dl_reset string A time indicate latest reset counter data of this proxy, format dd/MM HH:mm:sscounter_dl_updated string A time indicate latest updated counter data of this proxy, format dd/MM HH:mm:sscounter_ul_limit enum [ unlimited,limited]An enum indicate this port is limitedorunlimitedupload data usagecounter_dl_limit_by enum [ DAILY,WEEKLY,An enum indicate this port is limitedupload data usage by:MONTHLY,END_QUOTA,NONE]DAILY: counter will reset dailyWEEKLY: counter will reset weeklyMONTHLY: counter will reset monthlyEND_QUOTA: counter will reset when metcounter_ul_limit_quotalimitedNONE:ulimitedwithout limit data usagecounter_ul_limit_quota integer A number of MB (Megabytes) to limit upload data when counter_ul_limitenabled aslimitedAnd it will be caused this proxy can not use when reach the end of counter_ul_limit_quotaMB incounter_ul_limit_byperiod.counter_ul_used_bytes integer An integer indicate number of bytesdata uploaded of this proxycounter_ul_used_mb double A double indicate number of MB (Megabyte)data uploaded of this proxycounter_ul_reset string A time indicate latest reset counter data of this proxy, format dd/MM HH:mm:sscounter_ul_updated string A time indicate latest updated counter data of this proxy, format dd/MM HH:mm:ssbw_limit_enabled boolean Limit bandwidth download/upload? trueif enabled elsefalsebw_limit_rate integer A maximum of Mbps (Megabit per second) could be reached to download/upload created_at string A string present the date created socks/proxy custom_dns string A list of custom name server separate by comma for HTTP/HTTPs proxy memo string A noted text for this share socks/proxy
Example data. Click to expand
{
"data": [
{
"id": 1,
"position": 1,
"shared_port": 20001,
"port_type": "HTTP",
"ip_type": "IPv4",
"auth_ip_enabled": true,
"auth_ip_list": "171.226.0.32,171.226.0.33",
"auth_user_enabled": true,
"auth_user_list": "user1:pass1,user2:pass2",
"web_blacklist_enabled": false,
"web_blacklist": "",
"web_whitelist_enabled": true,
"web_whitelist": "instagram.com,*.instagram.com",
"expired_at": "09/07/2021",
"remaining": 28.2,
"counter_dl_limit": "limited",
"counter_dl_limit_by": "DAILY",
"counter_dl_limit_quota": 2000,
"counter_dl_used_bytes": 0,
"counter_dl_used_mb": 0.0,
"counter_dl_updated": null,
"counter_dl_reset": "11/06 05:55:31",
"counter_ul_limit": "limited",
"counter_ul_limit_by": "DAILY",
"counter_ul_limit_quota": 2000,
"counter_ul_used_bytes": 0,
"counter_ul_used_mb": 0.0,
"counter_ul_updated": null,
"counter_ul_reset": "11/06 05:55:31",
"bw_limit_enabled": true,
"bw_limit_rate": 25,
"memo": "share for user1",
"created_at": "19/01/1970",
"custom_dns": "74.125.41.7 74.125.41.8"
},
{
"id": 2,
"position": 2,
"shared_port": 20002,
"port_type": "HTTP",
"ip_type": "IPv4",
"auth_ip_enabled": true,
"auth_ip_list": "171.226.0.32,171.226.0.33",
"auth_user_enabled": true,
"auth_user_list": "user1:pass1,user2:pass2",
"web_blacklist_enabled": true,
"web_blacklist": "facebook.com,*.facebook.com",
"web_whitelist_enabled": false,
"web_whitelist": "",
"expired_at": "09/07/2021",
"remaining": 28.2,
"counter_dl_limit": "limited",
"counter_dl_limit_by": "DAILY",
"counter_dl_limit_quota": 2000,
"counter_dl_used_bytes": 0,
"counter_dl_used_mb": 0.0,
"counter_dl_updated": null,
"counter_dl_reset": "11/06 05:55:31",
"counter_ul_limit": "limited",
"counter_ul_limit_by": "DAILY",
"counter_ul_limit_quota": 2000,
"counter_ul_used_bytes": 0,
"counter_ul_used_mb": 0.0,
"counter_ul_updated": null,
"counter_ul_reset": "11/06 05:55:31",
"bw_limit_enabled": true,
"bw_limit_rate": 25,
"memo": "share for user2",
"created_at": "19/01/1970",
"custom_dns": "74.125.41.7 74.125.41.8"
}
],
"total": 2,
"status": true
}
Example cURL
curl 'http://192.168.1.100/selling/shared_proxies?page=1&limit=20'
Generate shared socks/http proxies
POST /selling/generate
Parameters
An ideas is generate multiple proxies in a range of positions from positionFrom to positionTo instead of create one by one shared port. It's save a lot time and convenient.
name type data type description positionFrom required integer Start position number to generate (included this position) positionTo required integer End of position number to generate (included this position) numberOfPorts required integer Number of shared ports per position portType required integer (1,2) Indicate this is shared socks or shared proxy. 1is shared proxy,2is shared socksipType required integer (1,2) Indicate this is IPv4 or IPv6 type 1is IPv4,2is IPv6genPort required integer (1,2) A type of generate port: 1is randomize port fromgenPortStart,2is start in a range with sequence incrementalgenPortStart required integer A shared port number starting with customDNS required string A customize ns servers separate by comma, leave blank if you want to use default google DNS (8.8.8.8 8.8.4.4) maxConnection required integer A maximum number of simulationeous connections for this socks/proxy expiredDate required integer A seconds from epoch time present the expired date of this shared port userAuthenticationEntry required string Authentication user/password list separate by comma like user1:pass1,user2:pass2. Leave blank if ignoreipAuthenticationEntry required integer Authentication IP list separate by comma like 128.123.1.38,1.211.12.125. Leave blank if ignorewhitelistLimitAccessEntry required integer Website whitelist list separate by comma like *.whitelist.com,facebook.com,*.facebook.com. Leave blank if ignoreblacklistLimitAccessEntry required integer Website whitelist list separate by comma like *.whitelist.com,facebook.com,*.facebook.com. Leave blank if ignorebwLimitEnabled required integer (0,1) Limit bandwidth download/upload? 1if enabled else0bwLimitRate required integer A maximum of Mbps (Megabit per second) could be reached to download/upload counterDownloadLimit required integer (1,2) Enable limit download data usage or not, 1if you want shareunlimited.2if you wantlimitedcounterDownloadLimitBy required integer (1-4) 1is daily reset,2is weekly reset,3is monthly reset,4is never resetcounterDownloadQuotaInMB required integer A number of MB (Megabytes) to limit download data when counterDownloadLimitenabled aslimitedcounterUploadLimit required integer (1,2) Enable limit upload data usage or not, 1if you want shareunlimited.2if you wantlimitedcounterUploadLimitBy required integer (1-4) 1is daily reset,2is weekly reset,3is monthly reset,4is never resetcounterUploadQuotaInMB required integer A number of MB (Megabytes) to limit upload data when counterUploadLimitenabled aslimitedcounterAllLimit required integer (1,2) Enable limit both download/upload data usage or not, 1if you want shareunlimited.2if you wantlimitedcounterAllLimitBy required integer (1-4) 1is daily reset,2is weekly reset,3is monthly reset,4is never resetcounterAllQuotaInMB required integer A number of MB (Megabytes) to limit upload data when counterAllLimitenabled aslimitedmemo required string A noted text for this share socks/proxy
Responses
A list of json object in data section
Example cURL
send a POST command delete shared socks/proxy with ID: 5 & 6
curl -X POST 'http://localhost/selling/generate' \
-H "Content-Type: application/json" \
-d '{
"positionFrom":1, "positionTo":2, "numberOfPorts":2, "authMethod":0,
"authEntry":"", "ipAuthenticationEntry":"125.22.13.11,125.22.13.12",
"userAuthenticationEntry":"user:123", "portType":1, "ipType":1, "genPort":2,
"genPortStart":20001, "expiredDate":1628964354656, "whitelistLimitAccessEntry":"facebook.com,*.facebook.com",
"blacklistLimitAccessEntry":"porn.com,*.porn.com", "counterUploadLimit":0, "counterUploadLimitBy":1,
"counterUploadQuotaInMB":100, "counterDownloadLimit":0, "counterDownloadLimitBy":1,
"counterDownloadQuotaInMB":100, "counterAllLimit":1, "counterAllLimitBy":1, "counterAllQuotaInMB":1000,
"bwLimitEnabled":0, "bwLimitRate":0, "customDNS":"8.8.8.8 8.8.4.4",
"maxConnection":1000, "memo":"Test"
}'
Responses
- Created successfully
HTTP status: 200
{
"status": true,
}
- Another status
{
"status": false,
}
Delete shared socks/http proxies
POST /selling/bulk_delete
Parameters
You can bulk delete a list of ID shared socks/proxy
name type data type description ids required Array (integer) Array of shared socks/proxy
Responses
- Deleted successfully
HTTP status: 200
{
"status": true,
}
- Another status
{
"status": false,
}
Example cURL
send a POST command delete shared socks/proxy with ID: 5 & 6
curl -X POST 'http://192.168.1.100/selling/bulk_delete' -H "Content-Type: application/json" -d '{"ids":[5,6]}'
Reset data counter on shared socks/http proxies
POST /selling/reset_data_counter
Parameters
An ideas is you want to reset the limit counter data usage immediately.
name type data type description ids required Array (integer) Array of shared socks/proxy
Responses
- Reset counter successfully
HTTP status: 200
{
"status": true,
}
- Another status
{
"status": false,
}
Example cURL
send a POST command to reset counter on shared socks/proxy with ID: 5 & 6
curl -X POST 'http://192.168.1.100/selling/reset_data_counter' -H "Content-Type: application/json" -d '{"ids":[5,6]}'
Contact information:
- Website: http://xproxy.io
- Telegram: @phunguyen_hcmus