我需要从使用knockout.js通过ajax加载的网站中抓取一些数据(我不确切知道它正在使用哪种技术。)
网站 www.msc.com 。我在这里寻找从巴塞罗那到迈阿密的时间表。因此,结果通过ajax加载,但不会出现在控制台或firebug中。
我尝试过太多次了。任何帮助或建议都会很明显。
答案 0 :(得分:0)
他们的脚本位于:https://www.msc.com/CMSTemplates/CraftedCMS/WebServices/RouteFinder.svc/Routes
他们阻止您直接在浏览器标签/窗口中调用它,可能是因为您尝试做的是违反其政策。如果他们希望人们抓取他们的数据,他们就不会阻止对他们的API的直接请求,或者他们会提供另一个公开记录的API供您在服务器上使用。
话虽如此,您可以在浏览器控制台中看到他们的Web服务返回JSON对象。您必须通过伪造协议变量来破解(可能是非法)您的方式,以实现您的目标。首先要考虑的是,他们只在以下情况下通过该Web服务返回结果:
a)通过XMLHttpRequest作为POST进行调用。 (这可以很容易地伪造它,但是下一点,不是那么多......)
b)使用引用者进行调用,在这种精确的情况下,引用者是:https://www.msc.com/routefinder?fromId=406&isCountryFrom=false&toId=83&isCountryTo=false
c)调用将cookie传递给服务器,该服务器已加密并签名,因此每个会话都在他们的数据库中,并且您的密钥可能是唯一的,所以祝好运解密:CMSPreferredCulture = fr-FR; ASP.NET_SessionId = gza5rfjrog2eb21ukrzma223; BIGipServerkentico.app〜kentico_pool = 439883018.20480.0000; bbbbbbbbbbbbbbb = LIKIGEACDJHDJPGPEOKGJBKODKDGOMHNKAEGEGKNODEDAEILEICBMLNLEFMAOIPPKMOIBBFAILFEEKJPIJDCBDDLFNBBMBPBGGKAIDOCMGHBEEIDMLPMIJJAMNFNIFMI; rxVisitor = 1497537754979PTPODMSFNIR8BFVAKK353FS76M2D1KNN; DTPC = 3 $ 537845860_975h-vCQTABPJMGEOKDPDVNLHPCPDASGAPMCPCBA;的rxvt = 1497539656937 | 1497537754995; DTSA = - ; dtLatC = 8; _ga = GA1.2.1247106544.1497537756; _gid = GA1.2.879601947.1497537756; _gali =结果; cookiePolicyApproved = TRUE; MSCAgencyId = 355840; _gat = 1; _gat_local = 1; dtCookie = 3 $ B74DFC30736F7DBF485B79C31C55B167 | www.msc.com | 1