gpt4 book ai didi

ruby-on-rails - 生成电子邮件地址图像或其他不易被抓取的内容

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:10 26 4
gpt4 key购买 nike

我正在为我的 Rails 项目寻找更好的文本到图像解决方案,以取代我当前的方法,即每次创建或更新新记录时使用 ImageMagick 生成 png。

我想防止大规模抓取数据和滥用所提供的电子邮件地址。我想知道是否有一个 API 来生成文本或使用 javascript 或 SVG 等。除了 Flash 之外的任何东西。

我正在寻找比我目前的方法更好的解决方案:

  def create_new_email_image

if email_changed?

path_to_images = '/images/emails'

puts "Connecting to AWS..."
config = YAML.load(File.open("#{RAILS_ROOT}/config/s3_credentials.yml"))[RAILS_ENV]
AWS::S3::Base.establish_connection!(
:access_key_id => config['access_key_id'],
:secret_access_key => config['secret_access_key']
)

puts "Finding S3 bucket..."
begin
bucket = AWS::S3::Bucket.find config['bucket_name']
rescue AWS::S3::NoSuchBucket
AWS::S3::Bucket.create config['bucket_name']
bucket = AWS::S3::Bucket.find config['bucket_name']
end

images_path = "#{RAILS_ROOT}/tmp/"
file_name = "#{id}.png"
#file_name = "5056.png"
file_path = images_path + "/"+ file_name

File.delete file_path if File.exists? file_path

img = Magick::Image.new(400, 22) { self.background_color = 'transparent' }
img.format = 'PNG'

text = Magick::Draw.new
text.annotate(img, 0, 0, 1, 0, "#{email}") {
self.gravity = Magick::WestGravity
self.pointsize = 18
self.fill = '#000000'
self.kerning = -1
self.font_weight = Magick::BoldWeight
}

img.write file_path

if AWS::S3::S3Object.exists? file_name, bucket.name + path_to_images
puts "file exists (deleting)"
AWS::S3::S3Object.delete file_name, bucket.name + path_to_images, :force => true
end

AWS::S3::S3Object.store file_name,
File.open(file_path),
bucket.name + path_to_images,
:content_type => 'image/png',
:access => :public_read,
:reload => true

`rm #{file_path}`
end
end

最佳答案

Rails 提供了一个 mail_to helper .

mail_to "me@domain.com"
# => <a href="mailto:me@domain.com">me@domain.com</a>

mail_to "me@domain.com", "My email", :encode => "javascript"
# => <script type="text/javascript">eval(decodeURIComponent('%64%6f%63...%27%29%3b'))</script>

mail_to "me@domain.com", "My email", :encode => "hex"
# => <a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>

mail_to "me@domain.com", nil, :replace_at => "_at_", :replace_dot => "_dot_", :class => "email"
# => <a href="mailto:me@domain.com" class="email">me_at_domain_dot_com</a>

mail_to "me@domain.com", "My email", :cc => "ccaddress@domain.com",
:subject => "This is an example email"
# => <a href="mailto:me@domain.com?cc=ccaddress@domain.com&subject=This%20is%20an%20example%20email">My email</a>

:encode => "hex":encode => "javascript"选项就是您正在寻找的。

关于ruby-on-rails - 生成电子邮件地址图像或其他不易被抓取的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com