retail-bot-research
Project description
轻松跳过烦人的人机,实现高效采集数据
注意:模块方法都是封装好的,专过人机检测风控,最好不要随意修改,因为某些参数一旦修改,可能会造成一系列的请求错误,或人机无法绕过的情况,如果有什么问题,可以直接私。
改模块将会持续更新...
使用流程 0.0.3
- 安装模块
pip install walmartBot
- 导入模块
from walmartBot import WalMart
WalMart = WalMart()
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()
# 设置代理
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())
- 获取过人机验证的令牌
WalMart = WalMart()
# 获取 _pxvid 令牌
get_pxvid_v2 = WalMart.get_pxvid_v2()
# 使用令牌请求资源
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}
)
print(res.text)
# 注意:获取令牌后,最好等待5-10秒在使用。 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.3.tar.gz
(19.8 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.3.tar.gz.
File metadata
- Download URL: walmartbot-0.0.3.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ceb845b8a5553242b9aba8e870ebd40b8403f5ca7cfbb27ae4616152127fd9a5
|
|
| MD5 |
7ea2570dbac74db4b1b203bb7ef656f7
|
|
| BLAKE2b-256 |
517e4245b4f6f99e6b9fb85d2a959287f3847dde29e95462647e6b8b7ee10bbb
|
File details
Details for the file walmartbot-0.0.3-py3-none-any.whl.
File metadata
- Download URL: walmartbot-0.0.3-py3-none-any.whl
- Upload date:
- Size: 9.9 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 |
f7c77ff6bc0dd79b23ff90b2498ac08262add2b26f3948e5eb97a321404c3377
|
|
| MD5 |
a77c593a4ace87b3a884b897017b4209
|
|
| BLAKE2b-256 |
c0951819ff794f0eb76fa3c892cafb5d73bd52802a1b34cee0d5bf9ad6a08880
|