Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 从GAE请求时从make_fetch_调用中删除标头(用户代理)_Google App Engine_Http Headers_Urlfetch_Google App Engine Python - Fatal编程技术网

Google app engine 从GAE请求时从make_fetch_调用中删除标头(用户代理)

Google app engine 从GAE请求时从make_fetch_调用中删除标头(用户代理),google-app-engine,http-headers,urlfetch,google-app-engine-python,Google App Engine,Http Headers,Urlfetch,Google App Engine Python,我有一个GoogleAppEngine(GAE)的应用程序,我正在使用Python 2.7。该应用程序从用户门户(比如Chrome)接收GET(ajax)请求。收到请求后,我准备异步连接,以便使用urlfetch.make_fetch_call()-GET request从GAE外部的多个网站(比如X1、X2等)请求数据 这对X1网站很有效,但对X2网站无效开始在本地开发服务器上进行探测。探测后,我怀疑X2正在检查头中的{'User-Agent':'Python-urllib/2.7'}标记。这

我有一个GoogleAppEngine(GAE)的应用程序,我正在使用Python 2.7。该应用程序从用户门户(比如Chrome)接收GET(ajax)请求。收到请求后,我准备异步连接,以便使用urlfetch.make_fetch_call()-GET request从GAE外部的多个网站(比如X1、X2等)请求数据

这对X1网站很有效,但对X2网站无效开始在本地开发服务器上进行探测。探测后,我怀疑X2正在检查头中的{'User-Agent':'Python-urllib/2.7'}标记。这是我最好的猜测,因为将此字段更改为{'User-Agent':'Mozilla/5.0'}会返回所需的结果

因此,我将代码上载到GAE,并使用urlfetch.make_fetch_call()启动该过程。在拦截这个调用时,我发现无论我做什么,GAE添加的默认头都不会被删除。 下面是GAE添加的默认标题

302218MS0KB Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/48.0.2564.103 Safari/537.36 AppEngine Google;(+;appid:s~xxx-etching-112014)模块=默认版本=1 107.178.194.96--[06/Feb/2016:19:57:04-0800]“GET/HTTP/1.1”302 383““Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,像壁虎)Chrome/48.0.2564.103 Safari/537.36 AppEngine Google;(+;appid:s~xxx-蚀刻-112014)”“1.usedForIntercepting.appspot.com”ms=218 cpu_ms=224 cpm_usd=0.000043加载_请求=1应用程序_引擎_发布=1.9.32跟踪_id=fd7b7420e7f8c23371a5b0ea7e9651实例=00C61B17BCE5EBAC2EBA44F26A01D4F2

这就是我尝试过的

for portal in self.searchPortals:
        spoofHeader = {
                       'User-agent':'Mozilla/5.0----------------------',
                       'Host':portal.getURL(),
                       'Accept-Encoding': 'identity',
                       'Connection': 'close',
                       'Accept': 'application/json, text/plain, */*',
                       'Origin': 'http://www.mywebsite.com'

                       }
        logging.info(spoofHeader)
        rpc = urlfetch.create_rpc(deadline=5)
        rpc.callback = lambda: self.handleCallBack(rpc, portal)
        #urlfetch.make_fetch_call(rpc, portal.getSearchURL(searchKeyword), headers={'User-agent':'Mozilla/5.0'})
        urlfetch.make_fetch_call(rpc, url='http://1.usedforintercepting.appspot.com', headers=spoofHeader)
        rpcs.append(rpc)

for rpc in rpcs:
    rpc.wait()
这是我收到的。

2016-02-07 13:01:21.306/302 59MS0KB Mozilla/5.0-------------------AppEngine谷歌;(+;appid:s~xxx-etching-112014)模块=默认版本=1 107.178.194.20--[06/Feb/2016:23:31:21-0800]“GET/HTTP/1.1”302 383-“Mozilla/5.0---------AppEngine Google;(+;appid:s~xxx-蚀刻-112014)”“1.用于接收.appspot.com”ms=59 cpu\u ms=6 cpm\u usd=0.000043应用程序引擎\u发布=1.9.32跟踪id=a4a1f521c5a6fa65ed0295835dd175实例=00C6117CE5EBAD444F2

我想要的是这样的东西。

获取HTTP/1.1 接受编码:标识 主持人:somelink.com 连接:关闭 用户代理:Mozilla/5.0

我想删除除用户代理以外的所有表单标题:Mozilla/5.0?? 注意-为了使用urlfetch拦截GAE发出的请求,我正在使用GAE的另一个实例。

在文档中,它说

出于安全原因,应用程序无法修改以下标头:

  • 内容长度
  • 主人
  • 变化
  • 通过
  • X-Appengine-Inbound-Appid
  • X-For
  • X-ProxyUser-IP
它还说:

以下标题表示请求应用程序的应用程序ID:

用户代理
。此标头可以修改,但App Engine将附加一个标识符字符串,以允许服务器识别App Engine请求。附加字符串的格式为AppEngine Google(+http://code.google.com/appengine;appid:appid),其中
appid
是应用程序的标识符

如果您想要自定义标头,则必须编写自己的urlfetch代码或使用外部服务器使用标头为您进行调用