【问题标题】:change javascript response and resend it更改 javascript 响应并重新发送
【发布时间】: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


【解决方案1】:

您不需要编辑 js 文件。 JS文件是一致的,不会及时改变。因此,您只需下载文件一次,对其进行更改并保存更改。然后,每当您想提供文件时,请重新发送保存在您计算机中的更改 javascript 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2013-09-29
    • 1970-01-01
    • 2019-05-19
    • 2021-09-28
    • 2016-07-01
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多