光缆还没修好,公司内部系统有些是放在美国的,不能访问就不能工作。而且因为是内部系统,web proxy也不能用。受
这位亚洲Geek的启发,用ruby做了一个mail proxy,用gmail做桥梁,deploy在美国office,从上海office发mail去访问。
使用效果附图
1. 发mail
2. 收到的mail(这是上一版的回复mail,现在code是把html文件作为附件的)
主要用到
- Watir 用来在那里打开IE,login,goto link,get html
- Gmailer 用来收发gmail
- 还有些小trick,在code里面都commment说明了一下
目前这个程序可以解决一些GET的请求,和GET的form,下一步要做的是,都是些不很紧迫的需求:
- form method=post,应该也可以用watir实现。
- 直接在mail里面click或者submit,就可以自动发一封request mail出去,把outlook当浏览器使。
共享一下代码。理论上可以访问任何网站。出于安全,code里面的公司网站,mail地址都只是例子。code只管拿去用,不要干坏事。
require 'gmailer'
require 'watir'
include Watir
host = "http://app.company.com"
login = "sa"
pwd = "secret"
gmail_account = 'mail.proxy'
gmail_pwd = 'secret'
msgerr = ""
GMailer.connect(gmail_account, gmail_pwd) do |g|
g.messages(:read => false).each_msg do |msg|
body = msg.body.gsub("<WBR>", "").gsub("u003d", "=") # to fix MIME format
unless body
# the same subject mails will be regarded as a conversation,
# we define a rule to avoid that.
msgerr = "Please do not use the subject that has been used."
else
urls = body.scan(/<a href="(.*)".*>\1<\/a>/i).flatten!
if urls.empty?
# if get no url, return a error msg.
msgerr = "Cannot find any URL in the request mail."
else
# browser
browser = IE.new
browser.goto( host + '/login.asp' )
browser.text_field( :name, 'loginname' ).set( login )
browser.text_field( :name, 'password' ).set( pwd )
browser.button( :name, 'submit2' ).click
files = []
for url in urls
browser.goto(url) # visit the url
html = browser.html.gsub("href=\"", "href=\"#{/.*\//.match(url)[0]}") # rewrite links
html = html.gsub("action=", "action=#{/.*\//.match(url)[0]}") # rewrite form actions, assume method=get
filename = url.split("/").last + ".htm"
File.open(filename, 'w') {|f| f.puts html}
files << filename
end
g.send(:to => msg.sender_email,:subject => "Re: " + msg.subject,:files => files)
files.each {|f| File.delete(f)}
browser.close
end
end
if msgerr
puts msgerr
g.send(:to => msg.sender,:subject => "Re: " + msg.subject,:body => msgerr)
end
end
end
[img]
- 描述: send mail
- 大小: 24.7 KB
- 描述: getmail
- 大小: 31.9 KB
分享到:
- 2007-01-04 22:42
- 浏览 2997
- 评论(0)
- 论坛回复 / 浏览 (0 / 3788)
- 查看更多
相关推荐
读写分离的核心思想是将数据库的读操作和写操作分开,主数据库(Master)负责处理所有的写操作,如CREATE、INSERT、UPDATE和DELETE,而从数据库(Slave)则专门处理读操作。这种设计可以显著提升系统的并发处理能力...
配置时同样需要将`proxy.ashx`部署到服务器,并在ArcGIS JavaScript API中设置`proxyUrl`属性。 **proxy.php** 是PHP语言实现的代理服务,适用于PHP环境,如Apache或Nginx。对于那些基于PHP的Web应用,可以使用`...
mail-proxy
MySQL Proxy 是一个开源工具,它允许你在 MySQL 客户端和服务器之间设置一个代理层,以便实现诸如负载均衡、故障切换、读写分离等高级功能。在这个场景中,我们将讨论如何配置 MySQL Proxy 来实现读写分离,以提高...
5. **启动mysql-proxy**:通过上述命令启动mysql-proxy后,它将会根据接收到的SQL语句类型(读或写),将请求转发至相应的数据库。 6. **验证读写分离是否成功**:可以通过向mysql-proxy发送SQL语句并观察其转发...
Ruby可以通过第三方库如HTTP::Proxy来配置和管理IP代理。 8. 避免重复抓取:使用哈希表或数据库记录已抓取的URL,确保同一页面不被多次抓取。 9. 考虑反爬策略:许多网站会设置反爬策略,如User-Agent检测、验证码...
Rails-反向代理Ruby on Rails的反向代理。 反向代理接受来自客户端的请求,将其转发到可以满足该请求的服务器,然后将服务器的响应返回给客户端安装你知道该怎么做。 在您的Gemfile中gem 'rails-reverse-proxy' 然后...
在SAP系统中,ABAP调用ABAP Proxy是一种常见的技术操作,用于在不同系统间或者同一系统内的组件之间实现通信。ABAP Proxy是SAP提供的一个强大的接口技术,它允许开发者创建安全、高效的远程调用机制。接下来,我们将...
Proxy和Stub的作用是解决进程间通信的问题,使得不同地址空间的应用程序可以透明地调用彼此的功能。 3. **MergeModule (x86)**:MergeModule是一个MSI(Microsoft Installer)模块,用于将组件打包到安装程序中。...
《GoProxy-Android:全能代理服务器在安卓平台的应用与实现》 GoProxy-Android是由snail007/goproxy团队开发的一款适用于安卓系统的全能代理服务器应用。此项目旨在为移动设备提供强大的网络代理功能,使得用户能够...
接下来我们将深入探讨标题和描述中涉及的“sharding-proxy实现分表”这一主题。 ### 1. 分库分表介绍 分库分表是数据库水平扩展的一种常见策略,用于解决单表数据量过大导致的性能问题。随着业务的增长,数据量...
proxy源代码,linux下的ftp 代理的源代码,大家多多支持啊
Proxy和Mycat是两种常用的中间件,用于实现这些功能。本篇文章将深入探讨proxy和Mycat的对比测试,以及如何在MySQL主从架构中进行测试。 首先,我们来看proxy。Proxy通常指的是数据库代理服务器,它位于应用服务器...
FoxyProxy 是一款高级代理服务器管理工具,是 Firefox 火狐浏览器的代理插件,相比比 SwitchProxy、ProxyButton、QuickProxy、xyzproxy、ProxyTex 等扩展提供更多的功能。 FoxyProxy 通过使用通配符、正则表达式和...
apache Proxy Error apache Proxy Error apache Proxy Error apache Proxy Error
通过使用proxy_redirect指令,我们可以将这个Location重写成客户端能够理解且不会暴露后端服务器细节的地址。 proxy_redirect指令可以设置为三种模式:default、off或redirect replacement。其中,“default”模式...
arcgis for javascript api所需要的配置文件,能解决跨域访问的问题,我在proxy....包含两个文件proxy.ashx,proxy.config两个文件,上次下载一个说是有两个文件,其实里面只有一个,有被骗了的感觉,所以这次上传上来
- `rw-splitting.lua` 是一个常用的Lua脚本,用于实现读写分发,即将读操作发送到只读服务器,写操作发送到主服务器。 - 其他如`auto-config.lua`, `balance.lua`, `commands.lua`, `parser.lua`, `tokenizer.lua`...