明朝時期,高陽住著一個姓陳的寡婦,她生得如花似玉,在十里八村出了名的貌美,身后有數之不盡的追求者,卻沒有一個人來上門提親,因為陳寡婦還有個七歲的女兒姬玥,追求者都把她當成拖油瓶,連著陳寡婦也不再想娶。
陳寡婦對這不以為意,姬玥是她和前夫的女兒,她就準備和姬玥一起相依為命,誰知近日村里新搬來了個小伙,叫白賴歷,對陳寡婦十分喜歡,也能接受姬玥。
白賴歷十分殷勤,每天到陳寡婦家來幫忙,洗衣做飯打掃衛生,他樣樣在行,給陳寡婦減輕了不少負擔,他還讀過書,能教姬玥認字,陳寡婦就答應了他的提親,兩人在半個月后成了一對夫妻。
婚后姬玥身上產生了不小的變化,她原本是個活潑開朗的姑娘,眼下卻變得十分陰沉,見到陳寡婦也不講話,每次碰見白賴歷時,神情總帶著幾分惶恐。且近幾個月她的身體消瘦了不少,飯也沒少吃。
陳寡婦不明所以,她為了弄清事情的真相,就偷偷躲在女兒床下,結果她當晚就發現了條大腿粗的蛇,半夜爬到女兒床上,正朝著女兒吸白氣。
陳寡婦當時也不敢動彈,直到大蛇離開房內后,她才回到自己房間。
據說蛇類最畏懼雄黃,一旦碰見雄黃就會受傷,陳寡婦就去鎮上買來雄黃,半夜大蛇再來時,她將雄黃全撒在大蛇身上。
大蛇被雄黃灼傷,痛地翻滾幾圈,從床上掉了下來,發現陳寡婦后迅速朝著外面爬去,邊爬邊發出一陣凄厲的慘叫,他還變成了白賴歷的模樣。
隨后真正的白賴歷到了門前,他方才一直在屋里休息,聽到慘叫聲才出來,得知大蛇偽裝成他逃跑后,立即朝著外面追過去。因著白賴歷是個捕蛇人,身上的力氣非常大,他很快發現了大蛇的蹤跡,并將大蛇給追回家,扔到陳寡婦面前任憑她盤問。
原來大蛇和姬玥沒什麼恩怨,倒是和白賴歷有些過往。
早在兩年前,白賴歷曾在山上捉到過一只白蛇,那時大蛇就在白蛇旁邊和她嬉鬧,他們是一對夫妻,就在他們玩得開心時,一柄鋼叉刺入白蛇體內,白蛇命喪當場,大蛇連忙逃竄到百米外才幸免于難。
而后,白蛇被白賴歷帶走,皮被做成了各種精美的器物,肉被燉成了湯。
大蛇舍不得妻子這樣離開,他撫養著幾個孩子當爹又當媽,日子非常不好過,有次他出去覓食了一趟,回來后幾個孩子就爬到了別處,大蛇怎麼找也沒找到,後來還是聽山林里別的蛇提起才知道,幾個孩子被捕蛇人捉了去,此人正是白賴歷。
大蛇失去了所有的家人,他決定找白賴歷報仇,可白賴歷捕蛇時的身影歷歷在目,大蛇根本不敢靠近他,才對姬玥下了手。
大蛇每晚都會來到姬玥房內,偷偷從姬玥身上吸走陽氣,才讓姬玥變成了如今的模樣。他化成白賴歷,就是想嫁禍給白賴歷,讓陳寡婦教訓他。
白賴歷聽完怒不可遏,遂找來他捕蛇用的鋼叉,以殺死白蛇的方式刺死了他。
姬玥已經從睡夢中驚醒,她發覺到大蛇離世后,唇角勾出了一絲微笑,緊接著周遭冒出許多黑氣,她身上也長出許多長刺,最終竟變成了只刺猬精。
原來刺猬精和大蛇有著相似的經歷,她的丈夫被大蛇吃掉了,她又不具備報仇的實力,只好設法借助人類的力量報仇。她先害死姬玥,又化成姬玥的模樣,教唆白賴歷去大蛇所在的地方捕蛇,讓大蛇失去了妻子和孩子。
刺猬報了仇,沒有繼續留下來的必要,起身就要離開,卻被白賴歷給攔下。
那白賴歷在當捕蛇人之前,是一位名聲顯赫的捉妖師,他嫌棄捉妖太辛苦,才轉行做了捕蛇人。他發現無論是大蛇,又或者刺猬,都在村里害死過人,白賴歷不準備放過他們。眼下大蛇已死,恩怨已消,刺猬也不能離開,她必須為自己的行為負責。
白賴歷念出一串咒語,刺猬精身上頓時冒出一團火焰,她還沒來得及跑出房門,就化成了飛灰。
陳寡婦得知事情的緣由后,她沒有怪罪白賴歷,只怪罪自己沒有看守好女兒,後來她依然和白賴歷過著普通的日子,她也在不久后懷上了身孕,并生下一對雙胞胎。