【发布时间】:2019-11-13 22:05:59
【问题描述】:
我正在尝试从服务器获取 java 脚本文件,对其进行操作并重新发送它作为对另一个请求的响应。 这是请求和响应文件
import requests as req
headers = {'Connection': 'keep-alive',\
'Pragma': 'no-cache',\
'Cache-Control': 'no-cache',\
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/75.0.3770.142 Safari/537.36',\
'Accept': '*/*',\
'Accept-Language': 'en-GB,en;q=0.9,en- US;q=0.8,fa;q=0.7,eo;q=0.6',\
'Cookie': '_ga=GA1.1.879245751.1566985641; cookieconsent_status=dismiss; \
csrftoken=soEaxgZCM95FtydIUO4McG7G5Uek2uknLRCs0K6VI8amnbEAw1dXWV3kIONBtpgV; \
_gid=GA1.1.1723047283.1573514239; io=yWUz84McCeIU7PLvJz1w'}
response = req.get('https://skribbl.io/js/game.js', headers = headers)
现在我想编辑 js 文件,例如,我想在它的函数的第一行添加一行。 我的代码在这里
x = 'o.prototype.createTransport=function(t){'
y = 'o.prototype.createTransport=function(t){console.log(this.hostname);'
response.__dict__['_content'] = str.encode(str(response.__dict__['_content']).replace(x, y))
内容正确更改,但问题是我认为我应该更改“内容长度”和其他一些我不知道的属性,以便浏览器可以解析这个新的 js 代码。例如,我不知道如何计算此响应的新“内容长度”。之后是否有任何标准库(如漂亮的 html 文件肥皂)自动执行此操作?
【问题讨论】:
-
您是想将您的请求发送回服务器,还是将您的一些 JavaScript 代码注入您从服务器获得的
game.js文件中并在 Web 浏览器中运行它? -
我不确定你为什么要这样做。但出于测试目的,您可以尝试使用 Chrome 的资源覆盖扩展。因此,您将能够将外部 JS 文件更改为任何您想要的。
-
@Pierre 是的,我想将请求发送回服务器
-
@uaBArt 谢谢,但我想在 python 中执行此操作并编辑 req.get() 的响应。
-
@kami54 您要将其发送到服务器上的哪个端点?
标签: python json python-requests web-crawler