ajax调用不在浏览器中显示任何内容

2024-09-30 12:15:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从这个页面抓取艺术家的网址

https://myspace.com/discover/artists?genreId=1002532

但是这个页面正在进行ajax调用以获取用户deatils。我可以在firebug中看到这个url

https://myspace.com/ajax/artistspage?chartType=heavyrotation&genreId=1002532&page=0

如果我在单独的选项卡中打开这个url,没有显示任何内容,但是如果我在firebug的response选项卡中查看它,它会显示所有的deatil。你知道吗

我怎样才能得到所有的内容?你知道吗


Tags: 用户httpscomurl内容ajax页面选项卡
1条回答
网友
1楼 · 发布于 2024-09-30 12:15:08

如果您在firebug中查看请求https://myspace.com/ajax/artistspage?chartType=heavyrotation&genreId=1002532&page=0,当您尝试在浏览器中手动转到它时,您会注意到它得到了401 Unauthorized响应。这是因为当从官方myspace页面https://myspace.com/discover/artists?genreId=1002532请求时,请求头是以一种特殊的方式设置的,这使得对数据的请求有效。当浏览器请求数据时,这些标头不存在。你知道吗

以下是有效的标题:

Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Client:persistentId=53065c06-c877-47c5-933a-4b22d7f28cd9&screenWidth=1440&screenHeight=900&timeZoneOffsetHours=7&visitId=31c9d922-9984-4ac5-9bb0-0bb253bc89c3&windowWidth=1043&windowHeight=407
Connection:keep-alive
Cookie:persistent_id=pid%3D53065c06-c877-47c5-933a-4b22d7f28cd9%26llid%3D%26lprid%3D%26lltime%3D; beacons_enabled=true; __utmt=1; ads=adInitVisit%3D1432446031357; player=sequenceId%3D-1%26paused%3Dtrue%26currentTime%3D0%26volume%3D0.5%26mute%3Dfalse%26shuffled%3Dfalse%26repeat%3Doff%26mode%3Dqueue%26radioEntity%3D%26radioMediaType%3D%26radioMediaId%3D%26radioCurrentTime%3D0%26pinned%3Dfalse%26streamStartDateTime%3D%26radioStreamStartDateTime%3D%26at%3D360%26incognito%3Dfalse%26allowSkips%3Dtrue%26ccOn%3Dfalse; visit_id=31c9d922-9984-4ac5-9bb0-0bb253bc89c3; __utma=102911388.1051160901.1432446029.1432446029.1432446029.1; __utmb=102911388.2.10.1432446029; __utmc=102911388; __utmz=102911388.1432446029.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
DNT:1
Hash:NjI2YWM0YzM0YmJiZTg1NsKqwpMGw4HCuAvClMOGwoxAXMOXw50Qw5PCnH7DqVQIAygsY25wwrfCtsOcd8KuwqnCiMKSwobCrMKswpvDhEIrDcKYM0rCocKbJcKYEsKWw53Dr8KIwq7CgMKWw5XCo8KBGHVvURQKwpzDrMO9w5fDlsKzNhDChMOtw7wgw7NuDsK0wq1oC1sOOXAzK8KuwqdyEUDDnRk+w6BPwrIhfsKtw7Fewrcpa8Okw4c%3D
Host:myspace.com
Pragma:no-cache
Referer:https://myspace.com/discover/artists?genreId=1002532
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2409.0 Safari/537.36
X-Requested-With:XMLHttpRequest

以下是无效的:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:persistent_id=pid%3D53065c06-c877-47c5-933a-4b22d7f28cd9%26llid%3D%26lprid%3D%26lltime%3D; beacons_enabled=true; __utmt=1; ads=adInitVisit%3D1432446031357; __utma=102911388.1051160901.1432446029.1432446029.1432446029.1; __utmb=102911388.2.10.1432446029; __utmc=102911388; __utmz=102911388.1432446029.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); player=sequenceId=-1&paused=true&currentTime=0&volume=0.5&mute=false&shuffled=false&repeat=off&mode=queue&radioCurrentTime=0&pinned=false&at=360&incognito=false&allowSkips=true&ccOn=false; visit_id=31c9d922-9984-4ac5-9bb0-0bb253bc89c3
DNT:1
Host:myspace.com
Pragma:no-cache
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2409.0 Safari/537.36

您将注意到有几个不同之处,最重要的是有效的请求头包括HashReferer头。我假设至少哈希必须存在,以便服务器验证。您必须找出这个散列是如何在myspace页面上生成的,并且可能还需要设置Referer标记来伪造来自正确页面的请求。你知道吗

如果你深入研究页面上的JS,你会发现这个片段位于https://x.myspacecdn.com/new/common/js/global.7A07230F0926F7451E2F85D8F2C647D0.min.js

a.setRequestHeader("Hash",context.hashMashter)

这是哈希头设置的地方,使用上下文.hashMashter,如果您转到https://x.myspacecdn.com/new/common/js/authentication.68B094D880713CC3A9EB77F984FC09F4.min.js,您可以看到它是用以下代码段设置的:

context.hashMashter=a.hashMashter

我还不知道a是什么,但是如果你想继续探索,我认为这是一个好的开始。你知道吗

相关问题 更多 >

    热门问题