HTML 垃圾返回时预计 JSON
HTML junk returned when JSON is expected
以下代码曾经有效但不再有效,我看到垃圾 HTML 返回成功代码 200。
response = urlopen('https://www.tipranks.com/api/stocks/stockAnalysisOverview/?tickers='+symbol)
data = json.load(response)
如果您在 chrome 中打开页面,您将看到 JSON 文件格式。但是当在 python 中打开时,我现在得到:
f1xx.v1xx=v1xx;f1xx[374148]=window;f1xx[647467]=e8NN(f1xx[374148]);f1xx[125983]=n3EE(f1xx[374148]);f1xx[210876]=(function(){var
P6=2;for(;P6 !== 1;){switch(P6){case 2:return {w3:(function(v3){var
v6=2;for(;v6 !== 10;){switch(v6){case 2:var O3=function(W3){var
u6=2;for(;u6 !== 13;){switch(u6){case 2:var o3=[];u6=1;break;case
14:return E3;break;case 8:U3=o3.H8NN(function(){var Z6=2;for(;Z6 !==
1;){switch(Z6){case 2:return 0.5 - B8NN.P8NN();break;}}.....
我应该怎么做才能适应新的后端更改,以便我可以再次解析 JSON。
这是一种机器人保护,可以防止人们做你正在做的事情。此 API 端点应该仅由网站本身使用,而不是由某些 Python 脚本使用!
如果您删除站点数据,然后在浏览器中重新访问该页面,您会看到它首先加载您看到的 HTML 页面,该页面加载一些 JavaScript,然后执行一个 POST 到另一个 URL 与一些数据。在此过程中的某个地方设置了许多 cookie,最后代码刷新页面,然后加载 JSON 数据。此时直接访问 URL returns 数据,因为已经设置了正确的 cookie。
如果您查看这些请求,您会看到服务器 returns 一个 header server: rhino-core-shield
。如果你 google 那,你可以看到它是 Reblaze DDoS Protection Platform.
的一部分
你可能会幸运地使用像 ghost.py or pyppetteer 这样的无头浏览器,但我不确定它的效果如何,你必须尝试一下。 正确 方法是找到官方(可能付费)API 来获取您需要的信息,而不是依赖 non-public 端点。
以下代码曾经有效但不再有效,我看到垃圾 HTML 返回成功代码 200。
response = urlopen('https://www.tipranks.com/api/stocks/stockAnalysisOverview/?tickers='+symbol)
data = json.load(response)
如果您在 chrome 中打开页面,您将看到 JSON 文件格式。但是当在 python 中打开时,我现在得到:
f1xx.v1xx=v1xx;f1xx[374148]=window;f1xx[647467]=e8NN(f1xx[374148]);f1xx[125983]=n3EE(f1xx[374148]);f1xx[210876]=(function(){var P6=2;for(;P6 !== 1;){switch(P6){case 2:return {w3:(function(v3){var v6=2;for(;v6 !== 10;){switch(v6){case 2:var O3=function(W3){var u6=2;for(;u6 !== 13;){switch(u6){case 2:var o3=[];u6=1;break;case 14:return E3;break;case 8:U3=o3.H8NN(function(){var Z6=2;for(;Z6 !== 1;){switch(Z6){case 2:return 0.5 - B8NN.P8NN();break;}}.....
我应该怎么做才能适应新的后端更改,以便我可以再次解析 JSON。
这是一种机器人保护,可以防止人们做你正在做的事情。此 API 端点应该仅由网站本身使用,而不是由某些 Python 脚本使用!
如果您删除站点数据,然后在浏览器中重新访问该页面,您会看到它首先加载您看到的 HTML 页面,该页面加载一些 JavaScript,然后执行一个 POST 到另一个 URL 与一些数据。在此过程中的某个地方设置了许多 cookie,最后代码刷新页面,然后加载 JSON 数据。此时直接访问 URL returns 数据,因为已经设置了正确的 cookie。
如果您查看这些请求,您会看到服务器 returns 一个 header server: rhino-core-shield
。如果你 google 那,你可以看到它是 Reblaze DDoS Protection Platform.
你可能会幸运地使用像 ghost.py or pyppetteer 这样的无头浏览器,但我不确定它的效果如何,你必须尝试一下。 正确 方法是找到官方(可能付费)API 来获取您需要的信息,而不是依赖 non-public 端点。