Google 测试工具 API - MobileFriendlyTest Python 403 禁止访问

Google Testing Tools API - MobileFriendlyTest Python 403 Forbidden

所以最近我遇到了 Google 测试工具 API - 移动设备友好测试 (https://developers.google.com/webmaster-tools/search-console-api/reference/rest/v1/urlTestingTools.mobileFriendlyTest) but I couldn't work it even when I am trying on the site. I tried to use python for this app and followed the guide (https://developers.google.com/webmaster-tools/search-console-api/v1/samples),我做了一些更改以使其实际工作(因为 urllib 已合并入一个图书馆)。所以一天结束时我的代码看起来像这样:

from __future__ import print_function
import urllib
import urllib.request as urllib2

api_key =   'API_KEY'
request_url = 'https://www.google.com/'
service_url = 'https://searchconsole.googleapis.com/v1/urlTestingTools/mobileFriendlyTest:run'


params = {
    'url' : request_url,
    'key' : api_key,
}


data = urllib.parse.urlencode(params)
content = urllib2.urlopen(url=service_url, data=str.encode(data)).read()
print(content)

我得到了错误:

  File ".\script2.py", line 14, in <module>
    content = urllib2.urlopen(url=service_url, data=str.encode(data)).read()
  File "C:\Python\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python\lib\urllib\request.py", line 531, in open
    response = meth(req, response)
  File "C:\Python\lib\urllib\request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)
  File "C:\Python\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\Python\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

我也尝试过使用 curl 命令和在线工具(不是 https://search.google.com/test/mobile-friendly,而是尝试这个 API 部分),但都没有用。

其实我自己解决了这个问题,我觉得主要是urllib引起的。这就是我所做的;

from __future__ import print_function
import urllib.parse as parser
import urllib.request as urllib2
import json
import base64

request_url = url

params = {
        'url': request_url,
        'key': api_key
    }

    data = bytes(parser.urlencode(params), encoding='utf-8')
    content = urllib2.urlopen(url=service_url, data=data).read()
    sContent = str(content, encoding='utf-8') #Shorthand for stringContent