ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.78k stars 822 forks source link

Improved data in flash.system.Capabilities #17145

Open GonzalezAtWork opened 4 months ago

GonzalezAtWork commented 4 months ago

It would be nive if we had better data in flash.system.Capabilities like :

image

adrian17 commented 4 months ago

‚Manufacturer’ is defined to be in format ‚Adobe [os name]’. We try to minimize the differences from real Flash Player, including here (not unlike Chrome having ‚mozilla’ in their user agent string). We might consider some official way to check if the player is real FP or Ruffle, but didn’t get to it yet.

As for W8 being reported (for W10), that sounds worth investigating (unless the browser ifself intentionally hides this information from us).

Croworbit commented 4 months ago

do you really need perfectly accurate data? if you're interested in fingerprinting, it might be better to find more suitable software

people don't want yet another fingerprinter.

adrian17 commented 4 months ago

This is not about fingerprinting. We’re not reporting to the SWFs anything more than FP did (in fact - less), or anything more that the browsers explicitly want us to know (in fact - less).

GonzalezAtWork commented 4 months ago

people don't want yet another fingerprinter.

well, those infos are important when you are building something multi-platform. Or even if you have workarounds for versions of browsers/players/emulations

evilpie commented 4 months ago

This all sounds quite abstract, do you have specific use case or even better existing SWF that would require this?

It would be nice if we could expose as little as possible information, especially because running in a web browser is basically its own platform that is independent from the underlying operating system. Furthermore it ensures we don't run into bugs where a SWF has different behavior depending on the capabilities.

For example I have seen one AIR application that only works on windows/mac and not linux, because it looks at the os (or version I don't quite remember).

GonzalezAtWork commented 4 months ago

For AIR apps that is logic, because the code can have some specific code that will not work on a given platform. For flex, we can need some infos for workarounds (stuff that don't work yet on Ruffle but does in FP, like printing) identification. Also, you can have different behaviors for devices, like Mobile/Tablets/Desktop/Televisions. That´s the whole idea behind "capabilities": being able to check if the running device have a given need.