It also would require corporate and union executives to appear in political ads that their organizations helped pay for and say that they approve the message, as candidates do in campaign commercials.
In addition, the measure would ban government contractors from contributing to campaigns, prevent recipients of federal TARP money from using it to influence elections, and curb foreign nationals and countries from contributing to campaigns.
"With this bill, no longer will corporations be able to drown out the voices of ordinary citizens," House Speaker Nancy Pelosi (D., Calif.) said before the vote.
The Disclose Act moves to the Senate, where Majority Leader Harry Reid (D., Nev.) said he was determined to pass it "so it can be signed by the president in time to take effect for the 2010 elections."
Republicans called the bill unconstitutional and a naked attempt by Democrats to protect their candidates in coming elections.
"They want to use their majority here in the House to silence their political opponents, pure and simple, for just one election," Minority Leader John Boehner (R., Ohio) said on the House floor.
Liberal Democrats also voiced disdain for the bill, largely because of a carve-out exemption from disclosure requirements that was originally added to keep the NRA from pressuring moderate and conservative Democrats to vote against the bill.
The original exemption was limited to groups with more than one million members, active in all 50 states, that derive no more than 15 percent of their funds from corporations, and have existed for more than 10 years. After liberal Democrats threatened to sink the bill, Democratic leaders expanded the exemption to groups with more than 500,000 members.