Actually the first version of my code used OBD, but then I found out that my new engine runs GM Lan - a General Motors variant of CAN Bus and uses two single wire CAN channels (CAN H and CAN L). I had a little Google and really couldn't find much on this manufacturer specific CAN Protocol so gave up on this route and decided just to interpret the vehicle harness instead. Having said that, overnight I realised that most of these sensors are likely to be 0-5v, though I guess I'll need to be sure that they can't exceed 5v. For these reads (fuel level, temps and pressures), can I just wire in the raw signal or will I need to put a zener on there just in case?
I actually work in automotive diagnostics, so I can shed some light here.
GMLAN refers to the proprietary portion of your cars electronics software. It's really just an addendum to OBD-II. If you're just trying to read emissions related data like standard sensors (O2 sensors, engine RPM, etc) you can use OBD-II over the two CAN wires you spoke of. An ELM-327 should accomplish this easily.
Now if you need to read more specific data, especially body-related stuff like your HVAC system, or if you want to run special tests (like activating the EVAP solenoid on or off), that's where GMLAN comes in. I hope that clears it up.
Anyway, if you're more comfortable reading the raw sensor values, yeah I'd say a resistor divider with maybe a diode to prevent the arduino from back feeding current into the ECU, that should get you what you need.