Historical Options data

Are there any good sources where I can obtain daily historical options data (strike price, expiration dates, bid/ask spread, etc).

I understand that this type of data is very hard to come by and almost impossible to find (reliable) free data; therefore I do not mind paying.

Also would anyone have any recommendations on how to backtest a covered call strategy without historical data, if even possible. I am using python.

A reliable and goods source is ORATS it is priced reasonably though not altogether cheap, you can get it from Quandl or Orats themselves, I only subscribe for the equities and ETFs market back to 2007, it costs me $$50 USD, monthly,$$66 AUD, monthly I actually pay. It is far more than just historical prices it is charts, backtester, scanner, all variations of implied and historical volatilities and greeks, etc, very good service.