Subcribe My Blog
蛛丝马迹
  • 蛛丝马迹功能开发中
最新评论
  • 最近文章评论

一个Fiddler小插件:Fedit

为大家奉上一个方便的Fiddler插件:Fedit

版本:1.0.0.1

代码:https://github.com/wsvn53/fedit

压缩包:http://imethan.com/wp-content/uploads/2011/11/Fedit.binary.1.0.0.1.zip

1. 背景

平时用Fiddler来调bug比较多,通常的做法是将网页源代码保存到本地,然后在Fiddler的AutoResponder中添加一条规则映射url到本地保存的文件。但Fiddler本身体验不是很好,这个操作过程看起来简单,可每次这样折腾挺烦的,特别是有时候调bug很急的时候(不知道大家还有其他高招没)。

用这个插件就可以直接编辑Fiddler Session List中的任何一个请求了,省去了你保存源码,添加Rule的麻烦,一切由插件自动完成了。如图:fedit-sreen

你只需要右键点击想要编辑的页面,弹出菜单中点Edit,就可以用配置好的编辑器打开。

2. 用法

将上面的压缩包解压到文件夹后,双击运行install.bat即可,可以你可以手动将/bin/Release/Fedit.dll文件复制到My Documents\Fiddler2\Scripts或者Program Files\Fiddler2\Scripts\文件夹下面即可。安装后需要重新启动Fiddler才能看到效果。看到下图所以标明安装成功了。

如果你刚装好插件,默认使用notepad来打开的,你也可以配置自己喜欢的编辑器,在右边的tab页可以看到”Fedit”的tab:

fedit

如上图,你可以添加或修改你希望用什么编辑器来打开什么格式的文件,注意,格式输入前面必须带个点号”.”,如”.css”。要删除某条规则可以右键点击,在弹出菜单中点”Delete”。fedit

好了,现在,你要修改http://www.baidu.com/,打开Fiddler后,先在浏览器访问一下这个链接,在Session List中右键点击,然后点”Edit”,然后notepad++蹦出来了:

fedit

把”百度一下,你就知道”这个标题改掉:

fedit

保存一下,然后刷新你的浏览器:

fedit

3. 收尾工作

这款插件的工作原理是自动保存Response内容到本地临时文件夹,然后给AutoResponder添加规则。但请放心,在程序退出和重新打开的时候,Fedit插件都会去清理掉临时编辑的规则和文件。所以不用担心垃圾文件的产生,也不比关心AutoResponder规则混乱,在临时编辑的过程中你可以随意的增加删除规则,不受任何影响。

对了,临时目录为:%userprofile%\My Documents\Fedit\,亲们如果要找自己编辑的文件可以去这个文件夹找,但请注意别随便修改删除config目录哦~

4. Bug反馈

不太会用C#,代码写得很乱,断断续续的思路也很乱,bug应该不少,欢迎大家拍砖或反馈给我。

(云)剪贴板:张总,现在你可以在公司CTRL+V了

博客草都一丈高了,特来除草。

国庆七天没出去玩,在家猫着,心血来潮想写个同步剪贴板的工具来解决在公司时Macbook Pro+iMac混用时不能同步剪贴板的尴尬。从来没玩过xcode就开始弄,然后只是觉得Google比那些“从入门到精通xxx”的书实在多了。

以前有个经典的笑话:“是这样的,张总?在家里的电脑上按了CTRL+C,然后在公司的电脑上再按CTRL+V是。。。
肯定不行的。即使同一篇文章也不行。不不,多贵的电脑都不行。”

这个APP取名叫SyncPaste,可以运行在Mac OSX 10.6以上,能够同步你剪贴板中的图片和文本内容,暂时还不支持RichText。山寨了一个ICON,讲究看吧:

最新版本:SyncPaste v0.1

SyncPaste是通过Dropbox来工作的,当你发送保存剪贴板内容时,SyncPaste会连接你的Dropbox并将内容保存在你Dropbox根目录下的/SyncPaste/exchange.data文件内。

所以,运行SyncPaste后,如果未获取Dropbox授权,这个操作只需要一次,以后直接打开SyncPaste就可以了,会显示界面如下:

然后APP会引导用户打开Dropbox网站进行授权:

Allow之后回到SyncPaste(右上角点SyncPaste图表>>Show Window),SyncPaste将获得Dropbox授权。

好啦,现在你可以选中一些文字或图片,在任何地方按一下CTRL+SHIFT+C,就开始复制剪贴板内容了。等右上角状态栏图表上的Loading图标消失,就表示同步成功了。

现在在你另外一台获取了Dropbox授权的电脑上,按CTRL+V,等待一小会儿,从Dropbox下载完毕后就会替换你本地的剪贴板并粘贴了。

也就是这样,张总,您现在可以在家按CTRL+SHIFT+C,然后在公司按CTRL+V了。

这个程序目前只是简单实现,以后考虑加入对文件、Richtext、多个剪贴板内容的支持,也没经过专业测试,肯定很多bug,嘿嘿。

Enjoy it!

Mac下编辑pac文件后快速生效

热衷于出墙的红杏们可能都知道pac文件,特别是Mac/Linux用户,通过修改这个pac文件可以控制哪些网站是通过代理访问,哪些网站直接访问,这样可以避免没有被墙的网站(如163.com)也通过代理访问。

但是Mac用户可能比较苦恼,修改了pac文件后,需要在网络配置里面重新指定一下这个pac的地址(比如在最后加个?时间截),让系统重新去读取pac内容。

其实Mac下有个命令可以直接制定pac文件路径,这样我么可以写成一个shell脚本以快速让系统更新pac。

shell语句如下:

#!/bin/sh
# This is a Shell for MacOSX 

# 获取当前pac文件
pacfile=`networksetup -getautoproxyurl Ethernet|grep URL|sed 's/URL: //g'|sed 's/\?.*//g'`
# 获取当前路径
dir=`pwd`
# 获取系统时间
unixdate=`date +%s`

pacfile="$pacfile?$unixdate"
# 重新设置
networksetup -setautoproxyurl Ethernet $pacfile
networksetup -setautoproxyurl Airport $pacfile
echo "PAC Reloaded: $pacfile"

将以上代码保存到本地,并设置其权限为可执行:
chmod +x pac

这样,当你修改pac文件后,执行一下这个pac命令,就能让系统快速的更新了(前提是系统已经设置了pac文件)。

这还不够方便,这个shell还需要增加指定pac文件、增加过率规则的功能,敬请期待..

另外,再放送一个ssh自动登陆并自动设置系统socks代理的脚本:

#!/usr/bin/expect -f  

set port 1987
set user root
set host imethan.com
set password yourpassword
set timeout -1  

spawn ssh -qTfnN -D $port $user@$host
expect "*assword:*"

send "$password\r"  

# Set network config
spawn networksetup -setsocksfirewallproxy Ethernet 127.0.0.1 $port
spawn networksetup -setsocksfirewallproxy Airport 127.0.0.1 $port

expect eof

用法同上~~

Flash引用时的https安全警报

IE6下https安全警报最为特殊,常见的有https页面引用http资源,iframe标签src属性为空、about:blank或#时,参考之前一篇文章,等两种情况,但这里还有一个不常见的,且很容易被忽视掉的情况,且看如下代码:
<object width=”780″ height=”260″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0” classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″>
<param name=”allowScriptAccess” value=”never”>
<param name=”allowNetworking” value=”none”>
<param name=”flashVars” value=”data={’label’:['淘宝网购物','信用卡还款','水电煤缴费','其他商家网站购物','其他'],’value’:[295.40, 500.00, 404.96, 85.00, 583.71]}”>
<param value=”https://img.alipay.com/img/ebill/pie.swf?t=20100928” name=”src”><embed width=”780″ height=”260″ src=”https://img.alipay.com/img/ebill/pie.swf?t=20100928″type=”application/x-shockwave-flash” flashvars=”data={’label’:['淘宝网购物','信用卡还款','水电煤缴费','其他商家网站购物','其他'],’value’:[295.40, 500.00, 404.96, 85.00, 583.71]}”></object>

这是一段很普通的在页面中调用flash插件的代码,这段代码只引用了一个swf资源,而且这个swf文件的url也是https开头,看起来应该不会报错,但在IE6下仍有安全警报。

经过排查,安全警报是由codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0” 引起的,这段代码通常是从别处复制而来(arale的flash组件无法正常使用这个flash,所以自己直接在页面中加了这段代码),一般都不会注意到这里。

codebase属性是为object元素设置调用对象的base url的,结合classid使用,IE浏览器会先查找是否存在注册过的classid(ActiveX),如果找不到则请求codebase提供的地址,Flash就是利用这个来让IE判断自动判断并到指定地址下载flash控件的cab包。

但IE6稍微不同一点,他会提前对当前页面所有即将要访问或可能会访问到的资源进行https安全规则检测,所以,以上代码也会导致IE6报警。

幸好http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0这个链接改为https也能正常访问到资源。

CSS3 Transition Event

这两天为了完成给@sofish的承诺,半夜三更围着webkit啃了一圈,无意中发现WebCore/dom/EventNames.h中含有一个webkitTransitionEnd事件名,出于好奇,查了下资料。

原来这是CSS3 Transition执行完毕的一个事件,webkitTransitionEnd是webkit独有的,Gecko内核系列浏览器对应的是transitionend

写个小demo来验证一下吧(webkit only):

这货不是demo

 

document.getElementById('transition-end-demo').addEventListener('webkitTransitionEnd', function(e){
    this.innerHTML = 'Good,Transition执行完毕';
}, false);

//改变元素宽度,触发transition动作
document.getElementById('transition-end-demo').addEventListener('mouseover', function(e){
    this.style.width = '500px';
}, false);