對於58同城自動登陸的補充【主要是程式碼】

NO IMAGE

看到有朋友回覆評論不知道如何利用上一篇我的寫的58同城的登陸,我在這裡把程式碼給大家看下吧,我封裝好的工具類:我的操作思路是這樣子的。因為我是在winform裡面坐的程式,之前沒有用WebBrowser元件,一直用的HttpWebrequest,但是這個js的話,只有利用webBrowser來進行了。大體思路就是1:用WebBrowser來載入這個js,這個js我下載到了本地2:根據對應的函式來進行呼叫。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace PostApplication.core.util
{
/// <summary>
/// 58.com的post工具類的工具類
/// 通過載入js檔案獲得對前端密碼的處理
/// </summary>
class Post58comUtil
{
String filePath = AppDomain.CurrentDomain.BaseDirectory   @"file\cd58.html";
private String password; // 需要進行處理的密碼
private long timesign;
public Post58comUtil(String password, long timesign)
{
this.password = password;
this.timesign = timesign;
}
/// <summary>
/// 初始化時間戳
/// </summary>
private void InitializeTimesign()
{
DateTime d1 = DateTime.Now.AddHours((double)(-8));
DateTime d2 = new DateTime(1970, 1, 1);
long d = (long)d1.Subtract(d2).TotalMilliseconds;
this.timesign = d;
}
public delegate String getm32strDelegate();
public String get32strOri()
{
object obj = MainForm.browser.Document.InvokeScript("getm32str", new object[] { password, timesign   ""});
return obj   "";
}
/// <summary>
/// 32str加密
/// </summary>
/// <returns></returns>
public String getm32str()
{
if (MainForm.browser.InvokeRequired)
{
getm32strDelegate g = new getm32strDelegate(get32strOri);
object obj = MainForm.browser.Invoke(g);
return obj   "";
}
else
{
return get32strOri();
}
}
public delegate String getm16strDelegate();
public String get16strOri()
{
object obj = MainForm.browser.Document.InvokeScript("getm16str", new object[] { password, timesign   "" });
return obj   "";
}
/// <summary>
/// 16str加密
/// </summary>
/// <returns></returns>
public String getm16str()
{
if (MainForm.browser.InvokeRequired)
{
getm16strDelegate g = new getm16strDelegate(get16strOri);
object obj = MainForm.browser.Invoke(g);
return obj   "";
}
else
{
return get16strOri();
}
}
}
}

呼叫方法:

 

// 獲取時間戳
DateTime d1 = DateTime.Now.AddHours((double)(-8));
DateTime d2 = new DateTime(1970, 1, 1);
long d = (long)d1.Subtract(d2).TotalMilliseconds;
Post58comUtil util = new Post58comUtil(loginUserPassword, d);

那麼16str和32str都可以呼叫了。。