Hallo,
wir möchten Kommentare über die Embed-JS-Funktion (die wirklich toll aussieht) auf Seiten unserer Website einbetten.
Dabei sind wir auf ein kleines Problem gestoßen, das diesem hier ähnelt:
It appears that when onebox fetches a url to grab opengraph data, it sends a user agent string of “Ruby”.
Can this be updated to provide a more useful user agent that identifies the crawler properly?
Wir nutzen Prerender, um Seiten für bestimmte User-Agents, z. B. Google, serverseitig zu rendern. Eine Erkennung für „Onebox
Ich habe es einmal versucht, und es sieht so aus, als wäre der User Agent ‘Ruby’.
Das ist seltsam, ich bin mir ziemlich sicher, dass Onebox seinen eigenen User-Agent sendet. Das weiß ich, weil WPEngine es liebt, alle unbekannten User-Agents zu blockieren, und wir manchmal darum bitten müssen, dass der Oneboxer-User-Agent speziell für die von ihnen gehosteten Onebox-WP-Sites freigegeben wird. Cc @techAPJ
david
(David Taylor)
13. September 2019 um 10:37
4
Onebox verwendet einen eigenen User-Agent. Ich denke, @Jono_Brain2 beschreibt den „Topic Embed“-Scraper, der Inhalte wie diese lädt.
attributes: %w[href src class],
remove_empty_nodes: false
}
opts[:whitelist] = SiteSetting.embed_whitelist_selector if SiteSetting.embed_whitelist_selector.present?
opts[:blacklist] = SiteSetting.embed_blacklist_selector if SiteSetting.embed_blacklist_selector.present?
embed_classname_whitelist = SiteSetting.embed_classname_whitelist if SiteSetting.embed_classname_whitelist.present?
response = FetchResponse.new
begin
html = open(url, allow_redirections: :safe).read
rescue OpenURI::HTTPError, Net::OpenTimeout
return
end
raw_doc = Nokogiri::HTML(html)
auth_element = raw_doc.at('meta[@name="author"]')
if auth_element.present?
response.author = User.where(username_lower: auth_element[:content].strip).first
end
Er gibt keinen User-Agent an, daher wird der Standard-Ruby-Agent verwendet.
Das ist es genau. Onebox hat einen eigenen User-Agent, aber die einbettbaren Kommentare verwenden den standardmäßigen Ruby-User-Agent.