gpt4 book ai didi

python - REST:Glassdoor API 需要 header 中的 User-Agent

转载 作者:行者123 更新时间:2023-12-01 04:39:51 26 4
gpt4 key购买 nike

这与 this 相关问题。我试图使用 parameters 查询 Glassdoor 公共(public) API已记录,但不断收到 403 Forbidden 响应。为了确保使用查询参数正确创建 URL,我获取了组合的查询 URL 并在浏览器中进行了尝试,结果成功。

从浏览器进行的查询开始,我设法发现用户代理不仅需要作为 URL 中的参数,而且还需要在 header 中传递。

将所有这些放在一起,下面是成功查询 Glassdoor 公共(public) API 的代码:

import urllib.request as request
import requests
import json
from collections import OrderedDict

# authentication information & other request parameters
params_gd = OrderedDict({
"v": "1",
"format": "json",
"t.p": "xxxxxx",
"t.k": "yyyyyyyy",
"action": "employers",
"employerID": "11111",
# programmatically get the IP of the machine
"userip": json.loads(request.urlopen("http://ip.jsontest.com/").read().decode('utf-8'))['ip'],
"useragent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
})

# construct the URL from parameters
basepath_gd = 'http://api.glassdoor.com/api/api.htm'

# request the API
response_gd = requests.get(basepath_gd,
params=params_gd,
headers={
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
})
# check the response code (should be 200) & the content
response_gd
response_gd.content

我的问题是——当User-Agent已经是URL参数的一部分时,为什么还需要在查询 header 中指定它?如果没有用户代理 header ,查询不应该工作吗?

最佳答案

fg,

一些提供商不喜欢向自动化工具提供数据,这些工具可能只是简单地抓取他们的数据......这是他们“可以告诉”他们正在为“人”而不是某种古怪的 Python 脚本提供服务的方式之一是通过检查浏览器通常应用的 User-Agent header 来实现的。

在这个特定实例中,Glassdoor 发布了他们的 API Terms here ,并在第三页顶部声明“我们保留限制或阻止对 Glassdoor API 进行大量调用的应用程序的权利,这些调用主要不是为了响应单个最终用户的直接操作。”

我倾向于认为这是通过查找 Header: User-Agent 来强制执行的,但大多数公司不会明确说明他们如何强制执行此操作。他们还要求您在显示其数据的批准网页/网站上显示他们的 Logo 并链接到他们的主页。

希望这有帮助。

关于python - REST:Glassdoor API 需要 header 中的 User-Agent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com