Ron*_*.Du 4 c# sql sqlite cookies google-chrome
我找到了chrome cookie文件的位置,我使用sqliteBrowser打开它并找到cookie表的结构.
我也成功读取了这个文件中的cookie,虽然cookie的值是加密的,但我仍然找到一些方法来解密它.
我还注意到,cookie表的creation_utc字段使用自1601.01.01以来的时间计数.
我想说的是我已经完成了一些工作,并且已经知道了chrome cookies文件的结构.
但问题是,当我要插入一个新的记录,使用C#的System.data.sqlite这个文件,我的计划就是无法插入此记录,并去像锁死一些状态,我注意到,这种情况是由executeNoQuery造成方法不退换!!!
相同的sql语法在我的测试sqlite文件中工作正常,所以我猜这个问题是由chrome cookies文件本身引起的.
谁能帮我?谢谢!
以下是我的代码试图设置cookie:
private static bool SetCookie_Chrome(string strHost, string strField, string value,DateTime expiresDate)
{
bool fRtn = false;
string strPath, strDb;
strPath = GetChromeCookiePath();
//strPath= GetTestCookiePath();
if (string.Empty == strPath) // Nope, perhaps another browser
return false;
try
{
strDb = "Data Source=" + strPath + ";pooling=false";
SQLiteConnection conn = new SQLiteConnection(strDb);
SQLiteCommand cmd = conn.CreateCommand();
Byte[] encryptedValue=getEncryptedValue(value);
cmd.CommandText = "INSERT INTO `cookies`(`creation_utc`,`host_key`,`name`,`value`,`path`,`expires_utc`,`secure`,`httponly`,`last_access_utc`,`has_expires`,`persistent`,`priority`,`encrypted_value`) "+
"VALUES ("+TimeUtil.get_creation_utc()+",'"+strHost+"','"+strField+"','','/',"+
TimeUtil.get_specific_utc(expiresDate.Year,expiresDate.Month,expiresDate.Day,expiresDate.Hour,expiresDate.Minute,expiresDate.Second)+
",0,0," + TimeUtil.get_creation_utc() + ",1,1,1,@evalue);";
cmd.Parameters.Add("@evalue", System.Data.DbType.Binary).Value = encryptedValue;
conn.Open();
int rtV=cmd.ExecuteNonQuery();
conn.Close();
fRtn = true;
}
catch (Exception e)
{
fRtn = false;
}
return fRtn;
}
Run Code Online (Sandbox Code Playgroud)
如果有人想修改chrome cookie文件,你可以参考我上面发布的代码.实际上,代码是对的,我之所以遇到问题的原因是从上面的评论中引用的:
发生这种情况的原因是因为我有相同的sql文件活动的另一个连接,所以就像文件锁工作的那样,它只是锁定文件,以防你读取一些脏值.
希望这个问题可以帮助别人.
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |