retail-bot-research
Project description
轻松跳过烦人的人机,实现高效采集数据
注意:模块方法都是封装好的,专过人机检测风控,最好不要随意修改,因为某些参数一旦修改,可能会造成一系列的请求错误,或人机无法绕过的情况,如果有什么问题,可以直接私。
改模块将会持续更新...
使用流程 0.0.4
- 安装模块
pip install walmartBot
- 导入模块
from walmartBot import WalMart
# 实例化
WalMart = WalMart()
# 直接请求大概率会出人机,需要搭配下面的ip池和令牌
res = WalMart.request('https://www.walmart.com/ip/Skytech-Archangel-Gaming-PC-Desktop-AMD-Ryzen-7-7700-NVIDIA-GeForce-RTX-5060-1TB-Gen4-NVMe-SSD-32GB-DDR5-RAM-Windows-11/17438712331?athAsset=eyJhdGhjcGlkIjoiMTc0Mzg3MTIzMzEiLCJhdGhzdGlkIjoiQ1MwMjAiLCJhdGhhbmNpZCI6Ikl0ZW1DYXJvdXNlbCIsImF0aHJrIjowLjB9&athena=true')
print(res.text)
- 代理配置与查看
WalMart = WalMart()
# 设置代理(建议用海外隧道ip池,每次请求自动更换ip)
WalMart.set_proxy('socks5h://127.0.0.1:7898/')
WalMart.set_proxy("socks5h://username:password@ip:port/")
# 删除已设置的代理
WalMart.disable_proxy()
# 查看代理字符串
print(WalMart.current_proxy())
# 查看request使用的代理
print(WalMart.get_requests_proxy())
- 获取过人机验证的令牌
import time
WalMart = WalMart()
# 设置ip池
WalMart.set_proxy("socks5h://username:password@ip:port/")
# 获取 _pxvid 令牌(版本二)
# get_pxvid_v2 = WalMart.get_pxvid_v2()
# 获取 _pxvid 令牌(版本三)(最新)
get_pxvid_v3 = WalMart.get_pxvid_v3()
# 获取令牌后,要等待15秒生效(要用海外ip进行获取令牌)
time.sleep(15)
# 使用令牌请求资源
res = WalMart.request(
url='https://www.walmart.com/ip/Skytech-Archangel-Gaming-PC-Desktop-AMD-Ryzen-7-7700-NVIDIA-GeForce-RTX-5060-1TB-Gen4-NVMe-SSD-32GB-DDR5-RAM-Windows-11/17438712331?athAsset=eyJhdGhjcGlkIjoiMTc0Mzg3MTIzMzEiLCJhdGhzdGlkIjoiQ1MwMjAiLCJhdGhhbmNpZCI6Ikl0ZW1DYXJvdXNlbCIsImF0aHJrIjowLjB9&athena=true',
cookies={"_pxvid": get_pxvid_v2},
random_tls=True # True 启用随机TLS,默认False(根据情况来,如果不随机TLS也能出数据,就不要开启)
)
print(res.text)
# 注意:获取令牌后,最好等待15秒在使用。 1个令牌不能并发请求多个资源,想要并发请求资源可以自己搭建一个令牌池。
# 一个令牌可以请求多个资源,令牌如果失效了,可以存储起来,等待2-5个小时即可恢复使用,具体轮询时间请自测
# 建议请求数据使用socks5h协议代理,该协议支持服务器DNS解析, 并选择好的海外隧道IP池,支持自动更新IP是最好不过的方式。
# 获取令牌 WalMart.get_pxvid_v2(proxies={...}) 也可以自己设置独立的ip去请求令牌。
使用场景如下(非登陆模式)
- 产品数据的采集(主要功能)
from walmartBot import WalMart
# 实例化
WalMart = WalMart()
# 设置ip池,最好是隧道代理
WalMart.set_proxy("socks5h://username:password@ip:port/")
# 请求获取数据
res = WalMart.request('https://www.walmart.com/ip/Skytech-Archangel-Gaming-PC-Desktop-AMD-Ryzen-7-7700-NVIDIA-GeForce-RTX-5060-1TB-Gen4-NVMe-SSD-32GB-DDR5-RAM-Windows-11/17438712331?athAsset=eyJhdGhjcGlkIjoiMTc0Mzg3MTIzMzEiLCJhdGhzdGlkIjoiQ1MwMjAiLCJhdGhhbmNpZCI6Ikl0ZW1DYXJvdXNlbCIsImF0aHJrIjowLjB9&athena=true')
# 拿到数据
print(res.text)
- 订单信息的采集
import random
import re
import time
from walmartBot import WalMart
def get_tracking_cookie(tracking_id) -> dict:
i = 0
while i < 3:
res = WalMart.request(f'https://www.walmart.com/tracking?tracking_id={tracking_id}')
get_dict = res.cookies.get_dict()
time.sleep(1)
i += 1
if len(get_dict) > 5:
return get_dict
def get_tracking_data(cookie, tracking_id) -> dict:
headers = {
"accept": "*/*",
"referer": f"https://www.walmart.com/tracking?tracking_id={tracking_id}&language=en",
"Wm_consumer.Id": "27909687-61fa-401e-b321-27da8fa30291",
"Wm_svc.Env": "prod2.0.0",
"Wm_svc.Name": "HALO-DECK-CLIENT"
}
res = WalMart.request4(f'https://www.walmart.com/api/tracking?trackingId={tracking_id}&language=en',
headers={**WalMart.headers(''), **headers},
cookies=cookie
)
try:
res_data = res.json()
return res_data
except:
print(f'错误html - {tracking_id}')
if __name__ == '__main__':
# 实例化
WalMart = WalMart()
# 设置代理
WalMart.set_proxy("socks5h://t16233522400727:gj7yv093@u980.kdltpspro.com:15818/")
# 订单号
tracking_ids = ['1LSCXLNA012957153', '1LSCXLNA012630543', '1LSCXLNA012279691', '1LSCXLNA012444333', '1LSCXLNA012958930', '1LSCXLNA012976471']
for tracking_id in tracking_ids:
# 获取cookie
cookie = get_tracking_cookie(tracking_id)
# 请求获取订单信息(高并发可能会出现其他小问题,如果请求报错,可以重试任务即可,整个流程可以稳定运行,成功率在80%以上,具体数据自己测)
print(get_tracking_data(cookie, tracking_id))
注意!!!
- 请试用socks5h协议代理,该协议支持服务器DNS解析
- 请试用海外隧道IP池,稳定性强,防风控强
- 本地试用的翻墙也要稳定,不要使用不稳定机场或节点,否定可能会请求失败报错等... 该风控可能由两种情况引起,一个是header检测,另一个是tls检测。 目前已解决header检测风控,测试后发现可以正常获取数据,如果多线程获取数据任然平凡出现风控,请联系我,我将添加tls指纹功能
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
walmartbot-0.0.4.tar.gz
(28.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file walmartbot-0.0.4.tar.gz.
File metadata
- Download URL: walmartbot-0.0.4.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca4680b8f9d52e8e8d876b4d29ed5c0cdbe437a24b1412a5a0c10067c834507e
|
|
| MD5 |
aaf3d1dcdd187e2a5e3a41679d5c7470
|
|
| BLAKE2b-256 |
5baa2201ddb0e7cb201f23db961b224ebac9ae5e62acf10595be8bc75292eec6
|
File details
Details for the file walmartbot-0.0.4-py3-none-any.whl.
File metadata
- Download URL: walmartbot-0.0.4-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4e732721202cfef5bdda2098d34d7e2b9c2a4d206688ee31b062242e10f82b5
|
|
| MD5 |
8dfc201c245027c951b9306658207de7
|
|
| BLAKE2b-256 |
0327f4a1011286ef66b43b0d78185f27b9cc2c4a319ceed41345c9335e802799
|