This strategy will get you started.
I downloaded the positions of the Moon and of DSCOVR from JPL's Horizons in 1 hour steps from about 2015-Feb-16 to 2023-May-29 with Earth's Geocenter as the origin, then calculated the separation angle from Geocenter to Lunacenter, then calculated the projected separation in kilometers of the luna center at the distance to Earth.
It's not an exact predictor of the tiniest of overlaps, but whenever the number is below say roughly 12,000 kilometers you should go and look for a lunar photobomb (appears somewhere within the frame) in the DSCOVR image database.
Note that one source of error will be that the trajectory for DSCOVR in Horizons is not NASA's home grown trajectory. It comes from the DSCOVR team and may have errors especially in the future prediction.
For more on that see answers to
I think the calculation can be refined, but I am not certain it's necessary.

Table of predicted events:
event approx date/time km projected
----- ---------------- ------------
001 2015-Apr-16 13:00 8417
002 2015-Jul-16 22:00 1584 https://www.nasa.gov/feature/goddard/from-a-million-miles-away-nasa-camera-shows-moon-crossing-face-of-earth
003 2015-Sep-27 14:00 570
004 2015-Nov-25 20:00 7602
005 2016-Mar-22 16:00 4888
006 2016-Jul-05 05:00 5178
007 2016-Sep-16 04:00 7878
008 2016-Sep-30 02:00 5392
009 2016-Oct-15 12:00 11726
010 2016-Nov-14 14:00 8127
011 2016-Nov-30 01:00 11574
012 2017-Mar-11 20:00 4739
013 2017-Jun-24 18:00 8634
014 2017-Oct-05 02:00 3944
015 2017-Nov-04 07:00 10465
016 2017-Nov-19 02:00 4518
017 2017-Dec-04 08:00 11004
018 2018-Mar-01 08:00 8926
019 2018-Jun-28 18:00 10316
020 2018-Sep-24 10:00 8942
021 2018-Oct-08 21:00 7596
022 2018-Oct-24 22:00 10120
023 2018-Nov-23 23:00 3308
024 2019-Jun-17 19:00 3944
025 2019-Sep-28 15:00 9053
026 2019-Oct-14 06:00 7765
027 2019-Nov-13 10:00 8996
028 2019-Nov-27 07:00 4272
029 2020-Feb-22 18:00 7383
030 2020-Jun-06 03:00 3348
031 2020-Oct-02 08:00 3723
032 2020-Nov-30 18:00 3850
033 2021-Feb-11 01:00 6624
034 2021-May-26 17:00 9368
035 2021-Sep-21 12:00 4524
036 2021-Dec-04 05:00 8681
037 2021-Dec-18 15:00 5436
038 2022-Jan-31 15:00 11547
039 2022-Feb-16 10:00 8369
040 2022-May-30 05:00 6875
041 2022-Sep-10 22:00 10717
042 2022-Dec-07 13:00 8934
043 2022-Dec-22 17:00 5306
044 2023-Jan-06 00:00 10221
045 2023-Feb-05 13:00 2468
046 2023-May-19 09:00 9001
After downloading the data from Horizons, here's the Python script I used to predict potential photobombs and generate the plots and table:
import numpy as np
import matplotlib.pyplot as plt
names = 'DSCOVR', 'MOON'
datas, linez, JDs = [], [], []
linez = []
for name in names:
n_offset = 100
fname = name + ' geocentric hourly horizons_results.txt'
with open(fname, 'r') as infile:
lines = infile.readlines()
a = [i for (i, line) in enumerate(lines) if 'SOE' in line][0]
b = [i for (i, line) in enumerate(lines) if 'EOE' in line][0]
lines = lines[a+1+n_offset: b]
linez.append(lines)
print(len(lines))
data = [[float(x) for x in line.split(',')[2:8]] for line in lines]
datas.append(data)
JD = [float(line.split(',')[0]) for line in lines]
JDs.append(JD)
dates = [line.split(',')[1] for line in lines]
pd, pm = [np.array(thing)[:, :3] for thing in datas] # drop velocity
pe = np.zeros(3) # geocenter is origin
vdm = pm - pd
vde = pe - pd
rdm, rde = [np.sqrt((thing**2).sum(axis=1)) for thing in (vdm, vde)]
dot_product_of_normals = ((vdm * vde).sum(axis=1)) / (rdm * rde)
angle = np.arccos(dot_product_of_normals)
rproj = np.tan(angle) * rde
JD = np.array(JDs[0])
JD_rel = JD - 2459580.5 #relative to 2022-Jan-01 00:00 UTC
year = 2022 + JD_rel/365.2564
threshold = 1.2E+04
A = (rproj[:-1] >= threshold) * (rproj[1:] < threshold)
B = (rproj[:-1] < threshold) * (rproj[1:] >= threshold)
JD_in = JD[1:][A]
JD_out = JD[:-1][B]
indices = ((np.where(A)[0] + np.where(B)[0]) / 2.).astype(int)
fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.plot(year, rproj)
ax1.set_ylim(0, threshold)
ax1.set_xlabel('year')
ax1.set_ylabel('projected radial distance of Moon at Earth (km)')
ax1.set_title('Lunar "photobombs" of Earth seen from DSCOVR')
duration = JD_out - JD_in
event_number = np.arange(1, len(duration) + 1)
ax2.plot(event_number, JD_out - JD_in)
ax2.set_xlabel('event number')
ax2.set_ylabel('approximate duration (days)')
plt.show()
for no, i in zip(event_number, indices):
print(' ', str(1000+no)[1:], dates[i][6:23], int(rproj[i]))