Domain objects are one way to do it, but these are not known for performance.
Another option is to use Dynamic Objects, periodically updating the actual IP definitions with a script, such as:
https://bitbucket.org/chkp/dynobj/src
Dynamic Objects perform better than Domain Objects, but are not SecureXL friendly and it is recommended to put rules that utilize them at the end of your rulebase to optimize performance.
URL Filtering is also an option if the sites in question are accessed over http/https, which will perform much better than the above methods.
Bookmarks