0基础用Python和Postman搜里程票教程
Python+Postman搜AA里程票教程因反爬升级失效,新方案用Claude.code+Chrome登录可跑通但Akamai持续升级
1. 关键信息
- 教程作者 @smb 提供0基础用Python和Postman搜索AA里程票的完整步骤(#1),包括:在aa.com搜索、使用开发者工具复制cURL、在Postman导入、修改Body、发送请求、用ChatGPT生成Python代码处理响应。
- 工具:Python、Postman、ChatGPT、curlconverter.com(#2)。
- AA日历API端点:
/booking/api/search/calendar,无需cookie即可运行(#89, #134)。 - 反爬升级:AA使用Akamai Bot Manager Premier,收集指纹、行为分析、动态JS挑战(#181);数据中心IP易被封(#162),家用裸IP相对安全(#164)。
- 封IP/403问题:大量用户反馈被AA封IP或403(#8, #9, #11, #171-175, #179),@smb 也遇到同样情况(#172)。
- 自动化部署:可用screen/tmux(#63-64)、cronjob(#85)、cloud function(#90)、apscheduler(#85)等。
- 其他航司:UA有反爬(#116),AC用Cloudflare(#110),BA需登录(#112),AV查多了封号(#113),国泰更简单(#143)。
- 新方法:用户@coolguy100 使用Claude.code编写代码,打开Chrome浏览器并登录AA账号,自动提取所需4-5个token,然后运行剩余代码查票(#188)。该用户后续报告:用此方法花了12分钟跑完日航和AA大亚洲到美国的6月经济舱和商务舱(#192,附截图)。
- 社区已有GitHub仓库:@coolguy100 在#194中提供了三个链接:https://github.com/Sekinal/aa_contest、https://github.com/tszumowski/aa_flight_search_tool(第二个是3年前写的,可能已失效)、以及另一个同作者的aa_flight_search_tool(Scrapes AA award flight search page for multiple O/D pairs and dates)。
- 新回复#195:@testars 反馈第一个GitHub仓库(Sekinal/aa_contest)已无法使用,AA的Akamai后续又升级了。
- 新回复#196:@sukasky 询问6月HND-LAX是否有这么多60k商务舱票。
2. 羊毛/优惠信息
无
3. 最新动态
- AA反爬升级:2024年6月左右AA部署了新的防爬技术,导致大量用户脚本失效(#175, #179, #181)。现在需要更复杂的指纹模拟或headless browser。
- @smb 因本教程升级为钛金会员(#76)。
- 部分用户发现删除cookie后脚本仍可运行(#89),但近期cookie变得重要(#179)。
- 用户@coolguy100 报告:昨天成功运行后,每5分钟试一次均无问题(#186)。新回复(#189-191)中用户讨论“五分钟查72个线路日期组合”是否可行,@anhpp 表示怀疑自己能否做到,并猜测@coolguy100 的脚本可能支持。
- 新回复(#184-#185):用户询问是否可在Chrome中运行或全用Python,以及是否需要注册AA小号。目前无明确答案,但教程本身支持纯Python方式(通过Postman导出cURL后生成Python代码),AA小号并非必需但可降低封号风险。
- 最新进展(#192):@coolguy100 使用其Claude.code方案,12分钟内跑完日航和AA大亚洲到美国的6月经济舱和商务舱,并附截图。
- 新建议(#193):用户@EVP 提议技术大佬们考虑建立GitHub org,共享代码、避免重复造轮子,并可通过PR增加互动,延伸泥潭社区协作。
- 新增GitHub仓库参考(#194):@coolguy100 提供了三个现有仓库链接,其中两个为AA查票工具,但第二个(tszumowski/aa_flight_search_tool)是3年前写的,可能因AA反爬升级已失效;另一个同作者的同名仓库描述为“Scrapes AA award flight search page”,需自行验证可用性。
- 最新反馈(#195):@testars 测试第一个GitHub仓库(Sekinal/aa_contest)已无法使用,AA的Akamai Bot Manager再次升级,导致该方案失效。
- 新讨论(#196):@sukasky 对6月HND-LAX航线出现大量60k商务舱票表示疑问,暗示可能数据有误或需进一步验证。
4. 争议或不同意见
- 0基础可行性:有用户认为0基础连Python都装不上(#16, #22),但@smb 认为Windows下直接下载安装即可(#18)。
- 封IP原因:@smb 认为与IP无关,同样IP用Postman正常但Python被block(#174);其他用户认为是数据中心IP问题(#162)。
- 自动化频率:有人10秒一发没问题(#148),有人10分钟一轮仍被限(#150-154),建议保守频率。
- 教程实用性:会的人不用看,不会的看了也手动使劲(#33);但半吊子能看懂(#34)。
- 新争议:@testars 反馈GitHub仓库已失效(#195),说明Akamai升级持续进行,社区方案需不断更新;@sukasky 对搜索结果真实性提出质疑(#196),暗示60k商务舱票可能不准确或需进一步验证。
5. 行动建议
- 若需搜AA里程票,优先使用本教程方法,但注意频率(建议1秒1次以上,避免并行,参考#148;用户@coolguy100 每5分钟一次成功,参考#186;新讨论中提及5分钟查72条线路,需自行测试可行性)。
- 遇到403时,尝试更换header、删除cookie、使用家用IP而非数据中心IP(#162, #164)。
- 考虑使用headless browser(如Playwright)配合rate limit(#47),或直接手动登录AA后运行脚本(#181)。新方案:使用Claude.code编写代码打开Chrome浏览器登录AA,自动提取token后运行查票代码(#188)。该方案已验证可在12分钟内跑完日航和AA大亚洲到美国6月经济舱和商务舱(#192)。
- 自动化部署建议:使用cloud function + scheduler(#90)或screen/tmux在服务器上运行(#63-64)。
- 其他航司(UA、AC、BA、AV)反爬更严,需单独研究;国泰日历更简单(#143)。
- 注意AA近期反爬升级,脚本可能随时失效,需持续维护。GitHub仓库Sekinal/aa_contest已确认因Akamai升级失效(#195),使用前务必验证兼容性。
- 关于运行环境:可在Chrome中手动操作,也可全用Python(通过Postman导出cURL后生成代码);AA小号非必需,但建议使用独立账号避免主号被封。
- 社区协作建议:考虑参与或发起GitHub org(#193),共享查票脚本、避免重复造轮子,通过PR和Issue促进技术交流。现有GitHub仓库(#194)可参考:https://github.com/Sekinal/aa_contest(已失效,#195)、https://github.com/tszumowski/aa_flight_search_tool(3年前,可能已失效),使用前需验证是否兼容当前AA反爬。
- 对搜索结果保持谨慎:如发现异常低价或大量余票(如6月HND-LAX 60k商务舱),建议手动验证后再做决策(#196)。
#p-3585975-h-1需要用到的工具: https://www.python.org/ https://www.postman.com/downloads/ https://chatgpt.com/ #p-3585975-aahnd-jfk-5-2教程示例:搜索AA航班HND-JFK 5月商务舱里程票 #p-3585975-h-1-aacomhnd-jfk-31. 在aa.com搜索HND-JFK航班 访问 http://aa.com 选中Redeem miles 搜HND-JFK,日期选5月任意一天 /uploads/short-url/eOCqjD0zEkrxpfKx3yka2xDFRFb.png?dl=1 #p-3585975-h-2-5-42. 查看整个5月的里程票情况 点击结果中的“Calendar /uploads/short-url/JNmJi6Olc48sDbGC2ZjSD3CKAS.png?dl=1 /uploads/short-url/eXzrjNpImekBywd4ilvKQSxy6Nt.png?dl=1 #p-3585975-h-3-53. 打开浏览器的开发者工具 按 F12 打开开发者工具,切换到“Network”标签 /uploads/short-url/hVrCqyPzOnFyzMSZXRDYRnSw9cY.png?dl=1 #p-3585975-h-4-64. 选择商务舱/头等舱 在日历中选择“Business/First” /uploads/short-url/gnZVpbwH6UubQmqNXoSseSjf5Q7.png?dl=1 #p-3585975-h-5-calendar-75. 查找并复制“calendar”请求 在开发者工具的“Network”标签下找到一个名为 calendar 的请求 /uploads/short-url/pIPxlqk63D3ZAWNcMoybV6AIsEI.png?dl=1 右键点击该请求,选择“Copy as cURL (bash)” /uploads/short-url/d0rQAUUuQXwKFD3axSLxppVWXrL.png?dl=1 #p-3585975-h-6-postman-86. 在Postman中导入请求 打开Postman,点击左上角的“Import” /uploads/short-url/er5aCjn8B0KERDiS6ww07LB92OO.png?dl=1 在“Raw text”选项中粘贴刚刚复制的内容,然后点击“Continue -> Import” /uploads/short-url/sVjZVZ6vV5d0JND1vzDoEP5sPTC.png?dl=1 #p-3585975-h-7-body-97. 修改请求的Body 导入后,切换到“Body”标签 /uploads/short-url/vjujZWRkfCpUFktQJo0eJ7r9TYl.png?dl=1 根据需要修改Body内容,例如可以将 maxStops 改为 0 以过滤掉所有中转航班 #p-3585975-h-8-108. 发送请求并获取响应 发送修改后的请求,查看是否成功返回结果 成功返回后,在结果中切换到“Raw”标签,复制全部内容 /uploads/short-url/q2MNBB8QdXPE49hncqay1m3SQfR.png?dl=1 #p-3585975-h-9-chatgptpython-119. 使用ChatGPT生成Python代码 打开ChatGPT,让它生成一段Python代码来处理第8步中获取的响应以获得符合你要求的票,例如: /uploads/short-url/xMNzA7y7KXk9gz82rqQcrgvgbid.png?dl=1 #p-3585975-h-10-python-1210. 在文本编辑器中编写Python脚本 将ChatGPT生成的代码复制到文本编辑器中 注意,响应数据应通过脚本获取而不是手动复制(倒也不是不行 ),可以在Postman中点击“Code”,选择“Python - http.client”并将内容复制到文本编辑器中,替换掉ChatGPT代码中的 response = {...} 部分 /uploads/short-url/m18NaT9jSdjwOOeO5n9ZEhITYlk.png?dl=1 /uploads/short-url/edQnnGcPjxvDXTQfKxcK4ZLm97K.png?dl=1 【Update】感谢 /u/ss004 提出的问题,如果code按钮找不到的话,是因为某个版本更新以后这个按钮被移到右边栏了 /uploads/short-url/jxFXjs3YaSu4KuKfVrSIFUaXZh9.png?dl=1 #p-3585975-h-11-1311. 处理响应数据 将Postman生成代码中的最后一行 print(data.decode("utf-8")) 改为 response = json.loads(data.decode("utf-8")) ,这样就可以与ChatGPT生成的代码无缝衔接 #p-3585975-h-12-python-1412. 保存并运行Python脚本 保存脚本并运行(这一步就不教了 ) #p-3585975-h-15进阶内容 至于接下来怎么自动化,就是小学生都会的内容了 想搜其它票请自行举一反三 还有其它问题可以自行google或者询问你的chatgpt
https://curlconverter.com/ https://curlconverter.com/ Utility for converting cURL commands to code
前排插眼
你的复杂了 需要你这个教程的人可能还真不会自己装python还有包管理的概念然后运行…… 但是应该会colab
主要感觉爬虫是个体力活,适合 /u/%E6%9E%97%E5%85%8B%E8%87%A3 这种年轻人来学习
林酱这么柔弱书生,我看他搞不来的
变钛了变钛了
感谢分享,已经被AA封IP了
已经被Linda封号了
这个属于进阶内容
ip封禁警告
还真没用过colab…… 这个教程倒是不需要任何第三方包,直接用即可
VS可以实现吗
有种在上front end 101的感觉
是VS Code的那个VS还是Virgin Atlantic的那个VS
0基础真的装的上python?不可能的…
我就想问一句 LZ那么多里程票喂饭贴 不少也拿了好多赞了 #p-3586042-h-1怎么还不是钛
windows下不是直接下载然后一直next吗
smb: 还是Virgin Atlantic 这个zs
前排坐等lz升钛金了
u1s1我觉得0基础的人连安装包都找不到…
能找到公开的api就行,比如VS也有一个award calendar,但查询频率控制在多少才安全就不是很清楚了
对,很多api需要auth,但AA不用
smb: 比如VS也有一个award calendar 是的VS现在只有London出发的几个机场才可以查calendar award,其他出发就报错
最复杂的一步应该是让脚本run regularly吧 如果自己有服务器能24小时开着就简单一些 不然的话需要部署到cloud
改URL大法失效了吗
不如由小林桑 /u/%E6%9E%97%E5%85%8B%E8%87%A3 来做一个side project,我来做他的mentor
已经失效
s老师觉得新的headless chrome能不能爬到那几个风控严格的program (看了下 感觉还不行的还是不行 并没有改变什么
真就喂饭到嘴里啊 收藏了
会的人不用看 不会的看了也就是手动使劲
我这样的半吊子大概是能看懂的,如果有搜票的需求会回来的
根据我和泥潭的cloudflare打交道的经验headless应该是最容易被detect的
学习了……
为啥 现在headless和有头的有什么核心差别吗 按我的理解所有dom渲染和窗口信息应该都有才对(?
s神 来晚了 已经海底两千里
合着你是来钓鱼的是吧,通篇不提ip的事情 要么是内部人员,直接用这个计划抓出泥潭用户ip,然后对ip屏蔽里程票 要么是票贩子,把泥潭用户的 scott123: ip封禁 以减少竞争对手 哦等等,才看到id 大佬我错了,我已经手动狗头保命了
应该不用核心差别吧,headless基本一定是机器人,像cloudflare这种估计会找到哪怕最细微的差别来做判断
我也有同样的疑问
可能我的ip是幸运儿
热知识 aa的g点很高的 s老师这么查都可以到分钟级别 我比s老师加的延迟更高一台机子能搜四五条线 ip被暂时ban了 半分钟后又是一条好汉
竟然真的还会暂时ban吗
会的 但是应该是一个rate limit 我之前查得太快就会暂时报错 sleep一小段时间就行
在线学习前端
其实还是playwright好用,做好rate limit也不容易被cf杀
第一步不是应该免费撸一个VPN吗
不愧是美卡论坛
会搞的人不用看你这个教程(比如还少了搜到票给自己发短信提醒) 不会搞的看这么一坨东西滑到底点个赞回个贴牛逼 人类本质都是草台班子
vpn不行 还是要找代理池
所以说最有效的方法还是 /t/250847/1260 天天开着浏览器就等着通知呢
hztravel: 点个赞 就够了
给你点了
楼主是不是马上要到钛金休息室喂饭了等等你的粉丝
牛666 冲钛啦
AA这个页面用自动刷新不太行哎 怎么直接用浏览器
啊 我说等s老师喂饭 把帖子的通知打开等新回复
顶楼主的授人以鱼不如授人以渔的高风亮节
s老师这进钛金的心 我辈楷模
先码住,之后来学习!!!!
hitmonlee: 如果自己有服务器能24小时开着 白痴问题,请问如果有服务器怎么24小时运行,我现在是在电脑上手动开一个terminal运行python main.py 不知道这样电脑关了是不是服务器也不运行python了
开个screen
screen或者tmux都行
Larry: 开个screen 感谢,我去让ChatGPT给我说明怎么用 所以不用这个的话是不是我的电脑关了python就停止运行了?
感谢分享 楼主可以冲钛了直接
不用的话你关了terminal就停止了
我理解的是如果用tmux只要电脑关了应该就不行 但是terminal关了是没问题的
Screen可以吗
我猜他说的电脑是用来开terminal连服务器的那台电脑?服务器必须得24小时开着才行
对我是指的这台电脑
那用terminal在服务器上装screen或者tmux,然后在screen/tmux里跑脚本就行
woc这个干货满分 不过把裸url给出来的航司不多吧
smb: 保存并运行Python脚本 0基础能会这个?
smb: 属于进阶内容 S老师可以去钛金区发帖啦。
我是扭曲大人,扭曲小人 @twistane 是我弟弟: S老师可以去钛金区发帖啦 恭喜S老师变钛。 https://www.uscardforum.com/t/topic/40649/465 因两个精彩的话题(https://www.uscardforum.com/t/topic/240330 、https://www.uscardforum.com/t/topic/259542 )而升级为钛金会员了
願我的小蜘蛛歸來仍是變鈦、無論那種型態,今天又要說愛您
啥?升钛了?s老师难道要去钛金lounge更新了?
加油吧。
请教一下大佬,要search两个机场(JFK DFW) 是否需要创建两个py脚本,问了gpt试着加slice到同一个脚本好像不行
钛牛了吧
最简单省事的做法还是开两个脚本同时运行,当然一个脚本肯定也是能做到的
科技大佬改变生活
按照教程终于搞定了python code, 请问自动化怎么搞? { “allCarriers”: True, “cabin”: “BUSINESS,FIRST”, “departureDate”: “2024-06-22”, “destination”: “HND”, “destinationNearbyAirports”: False, “maxStops”: None, “origin”: “SFO”, “originNearbyAirports”: False } 得手动改 departureDate, destination 和origin
如果要自动运行的话还需要用到部署,win上部署有定时任务可以用,linux上一般就是cronjob,另外python还有很多包可以实现定时任务,比如apscheduler这种。
最简单的自动化就是python脚本里面加个循环无限运行
请教大佬,AA这个cookie管多长时间呢?
根据我的经验,道高一尺魔高一丈。
不需要cookies,可以直接从request里删掉cookies
coolguy100: 请问自动化怎么搞? 我自己的做法:部署到狗云(因为毕竟熟悉),把python script 部署到cloud function 查票,然后结果上传到数据库 (Bigquery), 然后用looker studio 做一个简单的图表。cloud scheduler & pubsub 设置 每个小时就自动查一次。数据量小,所以都是免费的。 想看到时候,我自己点到 lookerstudio 网站看就行。 需求抢票的, cf 可以自动发邮件 or slack msg 给自己。 比如,这个是 我测试的 sfo to hkg 的经济舱 availability. (只看哪天有票) /uploads/short-url/FdwIkt0ceNxeGV9tSLaKWoQPTK.png?dl=1
有些是不是根据时间来收费的?
cloud function, bigquery, cloud scheduler, pubsub, 都是 serverless pay-per-use. looker studio 完全免费。 都按次数/量收费,不按时间。次数/量太少了,都在 free tier 里面。
嗯 秘诀是serverless, 我第一反应是cloud sql存,那样就要弄个vm了
都是大牛
太强了,等我今年nips中了一定学习下
Calendar 只能某看一天或者一个月有没有票。怎么把所有日期都打出来呀?总不能每天都send一个request 吧?
depart_date = ["2024-09-01", "2024-10-01", "2024-11-01"] for d in depart_date: 一次查一个月
谢谢,但是我的意思是,每次回的response 里只能看到这个月的最低价,我具体是怎么知道这个月里具体是哪天是那个价格呢?那天和我发的那天可能不是同一天
the json has every day in that month
谢谢!!我只看了最上面的一个node…
卡在让chatgpt生成代码这一步了,为啥我让他升成出来的代码是这个样子的。。。没有啥response之类的 /uploads/short-url/fx2MzypVgyWxdoZstOs02P1TUSQ.png?dl=1
小林很忙,勿扰
这太强了吧 每分鈡一次会被ban ip吗?
点continue generating,或者在prompt里让gpt不要include sample response
所以你有个截图么?chatgpt生成出来的code大概是什么样子的?为啥你的一开始是response =,我的一开始是data = 用的prompt是什么呢?
你公司有码农吧,请人吃顿饭,叫同事帮你写吧
harryiori: 一开始是response =,我的一开始是data = 这个无所谓的
我的代码段长这个样子 import http.client import json conn = http.client.HTTPSConnection("www.aa.com") payload = json.dumps({ "metadata": { "selectedProducts": [], "tripType": "OneWay", "udo": { "loyalty_tier": "Regular", "travel_type": "personal" } }, "passengers": [ { "type": "adult", "count": 1 } ], "requestHeader": { "clientId": "AAcom" }, "slices": [ { "allCarriers": True, "cabin": "BUSINESS,FIRST", "departureDate": "2024-07-08", "destination": "IAD", "destinationNearbyAirports": False, "maxStops": None, "origin": "EWR", "originNearbyAirports": False } ], "tripOptions": { "corporateBooking": False, "fareType": "Lowest", "locale": "en_US", "pointOfSale": "US", "searchType": "Award" }, "version": "", "queryParams": { "sliceIndex": 0, "sessionId": "", "solutionSet": "", "solutionId": "" } }) headers = { 'accept': 'application/json, text/plain, */*', 'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7', 'content-type': 'application/json', 'origin': 'https://www.aa.com', 'priority': 'u=1, i', 'referer': 'https://www.aa.com/booking/choose-flights/1', 'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"macOS"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36', } conn.request("POST", "/booking/api/search/calendar", payload, headers) res = conn.getresponse() data = res.read() response = json.loads(data.decode("utf-8"))
话说这个可以搞AC吗?搞了一下发现没什么头绪
我印象里ac用cloudflare 那就试试headless browser吧 难度++++
这个教程应该只适合有api的,AC不行
话说需要登录才能查的是不是基本都难度++++?(eg BA?
是的,而且有的查得多了还会封号(比如AV)
升钛!升钛!已经钛金了。
能搞UA吗?能的话我去试试
UA有反爬,会比较麻烦
UA不需要账户就能查 已经是难度—了 烦的是国泰这种又要账号又要反爬的 他的api又有延迟
你是真的被封了?我是真的被封了,怎么解封?
反爬的cookie好雜 求大神教教
s老师能教我弄个查南航的吗,expertflyer好像查不到了只能用官网了
我是搜到票给自己发邮件,但是挂了几个月都没搜到想要的日期。。。。
我裸ip,rate相当激进都没事。。 虽然我已经出到想要的票退出赛场了
我也是,我71秒刷一次calendar,不过被封了接近一周就好了
我速度可能是你的几倍。。
不错不错, 很详细。
这样比官网搜的快一些?
主要是为了自动化。。。
在calendar请求这一步就卡了,没找到任何请求,倒是有一堆issue /uploads/short-url/jIcUjIXCfA3H9fh6drWsQ5yyZLQ.png?dl=1
是不是打开dev tool晚了,或者设了什么filter?我看有23个request但全部被filter掉了。和下面的issue无关
woc 才看到,还好只爬了几个月的 AV,没有一直监控 不然怕不是号要没了
要命,我被403了,感觉也不像是封ip
重新上broswer发一次request拿到新的header试试
正在吃早饭,等会试试,别等会是这个https://stackoverflow.com/a/73795497。现在主要问题是我一开始写的时候手动call了几次没问题,server写完了跑崩了
脚本里不用带cookie的
你的意思是不带能跑通还是说我得手动加cookie? 我刚跑了几下,postman这部分是自动generate的,感觉postman写在也不一定是本地发送的 PS:继续吃早饭ing
不带cookie脚本可以跑通的
换了个语言,跑通了…… bisect了一下,node js里header一定要加 "sec-fetch-dest": "empty" ,但python,java,golang都不用——为了前端偷个懒,这framework可真愁人
嘿嘿 搞了个python代码跑了一下 日历的response还好说 才几百行 几十K 单日的response怎么几个M这么大啊。。。 选上Biz/First还是有几百K 不过想想我又不需要smb老师这样需要具体航班号的 一个人开单张直飞F够了 应该不需要再搞query了 不如多想想怎么扔云上跑起来
单日主要是为了排除幽灵票和aa的票
啊哈哈哈 我可以排除J 应该就没有AA的影响了吧 刚才local run突然弹出来吓我一跳 但是可惜我运行的间隔太大 并来不及(哦 虽然我也不需要这一张)
只要F的话应该可以的
请问国泰这种不怎么放票的,在他自己网站也行吗?
国泰也有日历,而且更简单一些
我在lifemiles.com登陆后,在developer → network里看到的air redemption find flight private里的内容点击copy cURL copy进postman是可以点击下一步的,但是点Send后显示{“description”:“Bad request: access denied”}是怎么回事?
smb老师是怎么排除aa幽灵票的 脚本跑了一周 有了几次突然连续一周calendar view available 当然实际上是幽灵票的 如果用 anhpp: 单日 的query多查一次 有什么特征 会很容易排除掉吗?
单日的query能看到具体张数,不是临期>1的话基本都是幽灵
脚本查有rate limit吗?
不并行1秒1个应该没什么问题
原来我10秒一发还是太收敛了
我靠,我现在10分钟一轮……
?一轮不止60个query吧 你在说啥呢 12个月 你搜六条路线
哦,你是这个意思是啊,我的意思是我systemd 10分钟一trigger,跑所有6条线路
那如果10分钟跑完了 不是<10秒一发了吗。。。
10 * 60 / 12 / 6 看起来是10秒不到 但本楼是5min一轮,我很谦虚的,Stay Humble /uploads/short-url/ioZgU6kR6Wme7kabFNPqflfXFFy.jpeg?dl=1
jackalsin: 10分钟一轮 可能还没票贩子手工刷的勤
3个票贩子每人8小时是吧?
我直接cURL在server上就跑不了了 本地都可以,server上就403,cookies在不在都一样
curl 本地可跑么?你直接复制粘贴postman里的command就行
本地可以跑,server就直接access denied,换了ip也不行
你本地是windows or Mac么,是的话,起个docker试试command? 我当时403就是因为那个 sec-* 那些header 但curl没问题
本地是mac,有道理。 aws server cURL都有问题真有点搞
数据中心ip的问题吧?我家用裸ip跑得好好的,一挂vpn马上403
我估计也是这个问题,但是裸ip跑不怕被封吗
基本没出过问题
厉害,留个言。以后有机会学习着做!
感谢教程! 2个NearbyAirports都设置False了,但是附近机场的还是会包括进来,大佬们这个有办法解决吗?
maxStops设为0试试
已经设置0了,我搜ORD的,点进去最低里程的是MKE,没有ORD
在postman发送请求会报cookies相关的错误Error: Header “Cookie” contains invalid characters,有大佬知道是咋回事吗
smb: 脚本里不用带cookie的 一共才一百多楼
今天收到 You don’t have permission to access “http://www.aa.com/booking/api/search/calendar” on this server. 这是被封了吗? 每小时才发6个request
我也是
我的也被封了。
感觉和ip什么的没有关系,同样的ip用postman发request是正常的,只是用py request被block
我是nas上跑的用的http.client不行了。local mac用的requests时不时可以,失败率明显提高。换header后可解,但是过几个小时就又不行了。感觉aa 可能是昨天deploy了新的防爬技术 之前gcp上deploy的pod是可以run的,现在连curl https://www.aa.com 都不行了,感觉是整个ip range被blacklist了,换了region也不行。试了google cloud functions,直接被honeypot了,也不403,而是慢慢耗着到timeout,增加你的resource 占用时间 尼玛aa一夜之间鸟枪换炮啊 太不讲武德了
确实,前几天老断,感觉在deploy新程序,现在彻底不行了。
感谢变钛老哥
感觉最近AA反扒又升级了。目前还是很胆小,以20%快速(10 sec),60%中速(1 min),20%慢速(1-2 min)的速率去query。至少能跑起来了! Cookies现在变得很重要,没有的话好像会直接403。Headless也会被detect,好难啊。
求问大佬们 PostmanRun出来429Too Many Requests要怎么解?第一次跑出来没有航班,第二次RUN出来429,等了一会再跑还是429
AA 使用的是 Akamai Bot Manager Premier,这是目前市面上最强的一档: 指纹跟踪: 它不只是看 IP,它会收集你的 Canvas 渲染指纹、声卡特征、字体列表 甚至 TLS 握手特征。 行为分析: 它会监测鼠标轨迹是不是"太直了",点击间隔是不是"太准了"。 动态挑战: 如果它怀疑你,会偷偷发一段只有真实浏览器能运行的 JS 代码,如果你运行不出结果,或者结果不对,直接 403 封杀。 刚才用claude.code费了九牛二虎之力搞出了个python 版本,总算能用了,得开一个Chrome browser, 手动登录AA之后才能跑python 查票 。
你的几分钟查一次?
标记一下。。
是在 chrome 里跑,还是可以全用 python 了?
是注册个AA小号么?
昨天成功后,每5分钟试一下,都没问题
只能擬人跑了 沒想到買鞋的東西竟然被AA看上了
/uploads/short-url/wFpUuyGddZ3awFhbElZOUTOfGdF.png?dl=1 Claude.code 试了好久,最后写了code打开一个chrome 浏览器,我登录AA账号,code自己从里面找所需要的4,5个token, 然后我就可以跑剩下的code查票了。
五分钟 是指 五分钟查 72个线路日期组合吗?
你的能这样查嘛,借我用用
我的肯定不能啊 所以我在 我怀疑帖子里新老哥的应该能
/uploads/short-url/c8R9Awh4PzBxGyrbXzc34S8yT5h.png?dl=1 一共花了12分钟把日航和AA大亚洲到美国的6月的经济舱,商务舱跑了一遍。 /uploads/short-url/n2kTZubK9FduwWeeRrmALDa6QBi.png?dl=1
潭里技术流大佬们要不要考虑搞个GitHub org哇,虽说都有claudecode了但是不用重复发明轮子还能提pr增加互动又何尝不是一种泥潭的延伸呢
好像已经有了 https://github.com/Sekinal/aa_contest https://github.com/tszumowski/aa_flight_search_tool https://github.com/tszumowski/aa_flight_search_tool Scrapes the American Airlines (AA) award flight search page to find flight availability for multiple origin/destination pairs and dates. 第二个是3年前写的,估计已经没用了,AA 反爬虫早就与时俱进了。
第一个试了下用不了,aa akamai后面应该是又升级了
6月hnd to lax有这么多60k的biz?